powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ввод данных в Oracle
25 сообщений из 28, страница 1 из 2
Ввод данных в Oracle
    #37264402
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Собственно имеется oracle 10g express edition и visual c# 2010 и ADO.NET. использую System.Data.OracleClient. Соединение с бд есть и оно работает. читать из бд могу
Проблемы следующие:
1) подскажите пожалуйста как сделать возможность добавления в бд в необходимую таблицу
2) возможность удаления из таблицы бд
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37264468
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем SQL не устраивает?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37264601
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tru55,

Т.е. не устраивает?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37264621
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты не знаешь, как послать на сервер SQL-запрос? Или что-то еще?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37264864
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не знаю как ввести строку через прогу в бд т.е. условно говоря я пишу в текстбокс и то что я написал записалось в необходимую мне таблицу
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37264965
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37265212
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tru55,

т.е. код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
using (OracleConnection conn = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
    OracleCommand command = new OracleCommand("update some_table set field1 = :field1, field2 = :field2 where field0 = :field0", conn);
    command.Parameters.Add("field0", OracleType.Number).Value =  1 ;
    command.Parameters.Add("field1", OracleType.VarChar).Value = "11";
    command.Parameters.Add("field2", OracleType.DateTime).Value = null;
    command.Connection.Open();
    command.ExecuteNonQuery();
}
в нём 3 строчки
Код: plaintext
1.
2.
3.
    
    command.Parameters.Add("field0", OracleType.Number).Value =  1 ;
    command.Parameters.Add("field1", OracleType.VarChar).Value = "11";
    command.Parameters.Add("field2", OracleType.DateTime).Value = null;
это и является вводом данных?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37265287
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. OracleCommand - собственно SQL предложение. Для вставки будет INSERT, для удаления - DELETE
2. Переменные, которые в команде обозначены через : , называются связанными переменными (bind var)
3. command.Parameters.Add - это процесс привязки к bind var конкретных значений. Откуда ты берешь эти значения - дело твое. Хоть из каких боксов, хоть еще откуда
4. command.ExecuteNonQuery - это собственно посылка составленной SQL-инструкции на сервер

PS
Не забудь для фиксации изменений на сервере выдавать команду COMMIT
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37265782
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tru55,

А вот можно про commit по подробней. Что именно нужно писать?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37265806
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё вопрос в строке "update some_table set field1 = :field1, field2 = :field2 where field0 = :field0"
у меня например есть таблица avtori там 2 поля: fio- varchar2 и nomer- number
и мне нужно добавить 1 автора "Иванов Иван Иванович" как строка будет выглядеть?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37265833
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в строке using (OracleConnection conn1 = new ОracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
ругается на ConfigurationManager пишет что не существует в текущем контексте
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37269711
DevForFun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе надо подключить соответствующий namespace.
Проще всего ставь курсор на ConfigurationManager - зажимай ALT+SHIFT+F10 из выпадающего списка выбираешь using ...
thats all.
Вообще ТС настоятельно советую прочитать пару книженций по основам ORACLE PL/SQL, ASP.NET для начинающих - особено тему ADO.NET. Большинство вопросов решишь
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37269777
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DevForFun,
Впереди дописал using System.Configuration;
Нажимаю. Ничего не происходит. Также пишет что не существует в текущем контексте
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37269905
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
читаю книгу С# и платформа .Net
На странице 645 приводится код
Код: plaintext
1.
2.
3.
4.
            myDataColumn.AutoIncrement = true;
            myDataColumn.AutoIncrementSeed =  1000 ;
            myDataColumn.AutoIncrementStep =  10 ;
            inventoryTable.Columns.Add(myDataColumn);
у меня студия ругается на inventoryTable.Columns.Add(myDataColumn);
пишет не существует в текущем контексте
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37271389
DevForFun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
farsчитаю книгу С# и платформа .Net
На странице 645 приводится код

myDataColumn.AutoIncrement = true;
myDataColumn.AutoIncrementSeed = 1000;
myDataColumn.AutoIncrementStep = 10;
inventoryTable.Columns.Add(myDataColumn);

у меня студия ругается на inventoryTable.Columns.Add(myDataColumn);
пишет не существует в текущем контексте


Судя по твоему коду - inventoryTable - это DataTable.
Покажи текст ошибки, ты вообще inventoryTable объявил?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37272642
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DevForFun,

да спасибо нашёл у меня просто другое название.
У меня ещё вопрос : в книге ни разу(сколько прочитал в ней по адо нет) не было описано соединение с субд. Всё делается через datacolumn datatable datarow. Предполагается что я сам должен это само собой прописать или оно само находит куда конектиться?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37272665
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно в этом весь вопрос. Есть код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
            DataTable avtoriTable = new DataTable("AVTORI11");
            DataColumn myDataColumn;
            //создаем столбец номер
            myDataColumn = new DataColumn();
            myDataColumn.DataType = Type.GetType("System.Int32");
            myDataColumn.ColumnName = "nomer";
            myDataColumn.ReadOnly = true;
            myDataColumn.AllowDBNull = false;
            myDataColumn.Unique = true;
            //настраиваем как столбец счётчика
            myDataColumn.AutoIncrement = true;
            myDataColumn.AutoIncrementSeed =  1000 ;
            myDataColumn.AutoIncrementStep =  10 ;
            avtoriTable.Columns.Add(myDataColumn);
            //создаём столбец фио
            myDataColumn.DataType = Type.GetType("System.String");
            myDataColumn.ColumnName = "FIO";
            myDataColumn.AllowDBNull = true;
            avtoriTable.Columns.Add(myDataColumn);
            //определяем в качестве первичного ключа столбец nomer
            DataColumn[] PK = new DataColumn[ 1 ];
            PK[ 0 ] = avtoriTable.Columns["nomer"];
            avtoriTable.PrimaryKey = PK;
            //читаем текстбокс  9 
            string s1=textBox9.Text;
            // создаём строки и читаем из текстбокс
            DataRow newRow;
            newRow = avtoriTable.NewRow();
            newRow["FIO"] = s1;
            avtoriTable.Rows.Add(newRow);
И мне нужно его соединить с ораклом в начале нужно просто написать ?
OracleConnection conn = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=USER-ПК)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=username;Password=password;");
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37272713
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно говоря сделал второй вариант по учебнику с использованием http://www.connectionstrings.com/oracle#p15. Создал специально пустого пользователя для теста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
namespace prob2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection cn = new OleDbConnection();
            cn.ConnectionString = "Provider=msdaora;Data Source=XE;User Id=12345;Password=12345;";
            cn.Open();
            DataTable avtoriTable = new DataTable("AVTORI11");
            DataColumn myDataColumn;
            //создаем столбец номер
            myDataColumn = new DataColumn();
            myDataColumn.DataType = Type.GetType("System.Int32");
            myDataColumn.ColumnName = "nomer";
            myDataColumn.ReadOnly = true;
            myDataColumn.AllowDBNull = false;
            myDataColumn.Unique = true;
            //настраиваем как столбец счётчика
            myDataColumn.AutoIncrement = true;
            myDataColumn.AutoIncrementSeed =  1000 ;
            myDataColumn.AutoIncrementStep =  10 ;
            avtoriTable.Columns.Add(myDataColumn);
            //создаём столбец фио
            myDataColumn = new DataColumn();
            myDataColumn.DataType = Type.GetType("System.String");
            myDataColumn.ColumnName = "FIO";
            myDataColumn.AllowDBNull = true;
            avtoriTable.Columns.Add(myDataColumn);
            //определяем в качестве первичного ключа столбец nomer
            DataColumn[] PK = new DataColumn[ 1 ];
            PK[ 0 ] = avtoriTable.Columns["nomer"];
            avtoriTable.PrimaryKey = PK;
            //читаем текстбокс  9 
            string s1 = textBox1.Text;
            // создаём строки и читаем из текстбокс
            DataRow newRow;
            newRow = avtoriTable.NewRow();
            newRow["FIO"] = s1;
            avtoriTable.Rows.Add(newRow);

            cn.Close();
        }
    }
}
когда на выполнении ввожу строку для добавления и нажимаю на кнопку запуска то выдаёт следующее
ORA-12154: TNS:could not resolve the connect identifier specified
т.е. как я понимаю соединиться он не даёт почему
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37273187
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итак ошибок больше не выдаёт. код прокручивается, но табличка не появляется при заходе в oracle database
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace prob2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OleDbConnection cn = new OleDbConnection();
            cn.ConnectionString = "Provider=msdaora;Data Source=USER-ПК;User Id=12345;Password=12345;";
            cn.Open();
            DataTable avtoriTable = new DataTable("AVTORI11");
            DataColumn myDataColumn;
            //создаем столбец номер
            myDataColumn = new DataColumn();
            myDataColumn.DataType = Type.GetType("System.Int32");
            myDataColumn.ColumnName = "nomer";
            myDataColumn.ReadOnly = true;
            myDataColumn.AllowDBNull = false;
            myDataColumn.Unique = true;
            //настраиваем как столбец счётчика
            myDataColumn.AutoIncrement = true;
            myDataColumn.AutoIncrementSeed =  1000 ;
            myDataColumn.AutoIncrementStep =  10 ;
            avtoriTable.Columns.Add(myDataColumn);
            //создаём столбец фио
            myDataColumn = new DataColumn();
            myDataColumn.DataType = Type.GetType("System.String");
            myDataColumn.ColumnName = "FIO";
            myDataColumn.AllowDBNull = true;
            avtoriTable.Columns.Add(myDataColumn);
            //определяем в качестве первичного ключа столбец nomer
            DataColumn[] PK = new DataColumn[ 1 ];
            PK[ 0 ] = avtoriTable.Columns["nomer"];
            avtoriTable.PrimaryKey = PK;
            //читаем текстбокс  9 
            string s1 = textBox1.Text;
            textBox2.Text = s1.ToString();
            // создаём строки и читаем из текстбокс
            DataRow newRow;
            newRow = avtoriTable.NewRow();
            newRow["FIO"] = s1.ToString();
            avtoriTable.Rows.Add(newRow);

            cn.Close();
        }
    }
}
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37274842
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не может подсказать что не так?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37275374
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
farsНеужели никто не может подсказать что не так?
А SQL-то где? Как Вы данные сохраняете?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37276216
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSerge,

А какой sql имеется ввиду? Нужно было что-то ещё прописать?
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37276558
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я читаю книжку С# и платформа NET. там ничего про sql и про что то ещё вообще нет разговора
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37276677
DevForFun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
farsНеужели никто не может подсказать что не так?

постарайся точнее формулировать вопросы, сложно догадаться что ты имел ввиду.

мтак задача у тебя насколько я понял связать клинтское приложение с БД. Здесь все просто- Оракл предоставляет мнодество интерфейсов взаимодействия OO4O, Com, Sockets, ODBC, TCP/IP and so on.
Т.к. .Net это виртуальная машина, которая по своему устройству не может напрямую использовать нативный код, то существуют обертки которые реализуют в идеалогии .Net элементы взимодействия.
Микросовфт поставляет generic oracle dataprovider который довольно хорошо работает с ораклом версии 8 и выше (фичи последних версий оракла ака spatials - данный провайдер не поддерживает) Также оракл выпускает свою версию .Net датавпровайдера с каждой версией оракла - своих граблей тоже хватает (например обратная совместимость- головная боль).
И так для подключения в БД надо указать строку подключения
посмотреть можно здесь

Далее необходимо написать даталеер

выглядеть это будет приблизительно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
public DataTable getDataTable(OracleCommand oracleCommand, out string errMsg) 
        {
            DataTable dt = new DataTable();
            errMsg = string.Empty;
            try
            {
                OracleDataReader oDataReader = oracleCommand.ExecuteReader();

                
                for (int i = 0; i < oDataReader.FieldCount; i++)
                {
                    dt.Columns.Add(new DataColumn(oDataReader.GetName(i), oDataReader.GetFieldType(i)));                
                }

                while (oDataReader.Read())
                {
                    DataRow rowT = dt.NewRow();
                    Object[] rowData = new Object[oDataReader.FieldCount];

                    for (int i = 0; i < oDataReader.FieldCount; i++)
                    {
                        if (oDataReader.GetDataTypeName(i).Equals("NUMBER") && (!(oDataReader.IsDBNull(i))))
                        {
                            rowData[i] = oDataReader.GetOracleNumber(i).ToString();
                        }
                        else
                        {
                            rowData[i] = oDataReader.GetValue(i);
                        }                    
                    }

                    rowT.ItemArray = rowData;
                    dt.Rows.Add(rowT);
                }
            }

            catch (Exception e)
            {
                errMsg = e.Message;
            }
            finally
            {
                oracleCommand.Connection.Close();
                oracleCommand.Connection.Dispose();
            }
            return dt;

        }


Далее можешь использовать объект с данными (надо проверть нет ли эксепшена в out param и есть ли данные в dt)
...
Рейтинг: 0 / 0
Ввод данных в Oracle
    #37276734
fars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DevForFun,

Я очень сильно извиняюсь но этот даталеер нужно просто в код проги запихнуть как я понял.
И я на том же сайте смотрел строку как в книге написано
Код: plaintext
1.
Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;
это же написано и в книге
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Ввод данных в Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]