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

Т.е. не устраивает?
...
Рейтинг: 0 / 0
17.05.2011, 13:44
    #37264621
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Ты не знаешь, как послать на сервер SQL-запрос? Или что-то еще?
...
Рейтинг: 0 / 0
17.05.2011, 15:16
    #37264864
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Я не знаю как ввести строку через прогу в бд т.е. условно говоря я пишу в текстбокс и то что я написал записалось в необходимую мне таблицу
...
Рейтинг: 0 / 0
17.05.2011, 15:46
    #37264965
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
...
Рейтинг: 0 / 0
17.05.2011, 16:48
    #37265212
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
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
17.05.2011, 17:07
    #37265287
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
1. OracleCommand - собственно SQL предложение. Для вставки будет INSERT, для удаления - DELETE
2. Переменные, которые в команде обозначены через : , называются связанными переменными (bind var)
3. command.Parameters.Add - это процесс привязки к bind var конкретных значений. Откуда ты берешь эти значения - дело твое. Хоть из каких боксов, хоть еще откуда
4. command.ExecuteNonQuery - это собственно посылка составленной SQL-инструкции на сервер

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

А вот можно про commit по подробней. Что именно нужно писать?
...
Рейтинг: 0 / 0
17.05.2011, 20:19
    #37265806
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Ещё вопрос в строке "update some_table set field1 = :field1, field2 = :field2 where field0 = :field0"
у меня например есть таблица avtori там 2 поля: fio- varchar2 и nomer- number
и мне нужно добавить 1 автора "Иванов Иван Иванович" как строка будет выглядеть?
...
Рейтинг: 0 / 0
17.05.2011, 20:45
    #37265833
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
в строке using (OracleConnection conn1 = new ОracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
ругается на ConfigurationManager пишет что не существует в текущем контексте
...
Рейтинг: 0 / 0
19.05.2011, 15:58
    #37269711
DevForFun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Тебе надо подключить соответствующий namespace.
Проще всего ставь курсор на ConfigurationManager - зажимай ALT+SHIFT+F10 из выпадающего списка выбираешь using ...
thats all.
Вообще ТС настоятельно советую прочитать пару книженций по основам ORACLE PL/SQL, ASP.NET для начинающих - особено тему ADO.NET. Большинство вопросов решишь
...
Рейтинг: 0 / 0
19.05.2011, 16:19
    #37269777
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
DevForFun,
Впереди дописал using System.Configuration;
Нажимаю. Ничего не происходит. Также пишет что не существует в текущем контексте
...
Рейтинг: 0 / 0
19.05.2011, 17:00
    #37269905
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
читаю книгу С# и платформа .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
20.05.2011, 13:35
    #37271389
DevForFun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
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
21.05.2011, 13:48
    #37272642
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
DevForFun,

да спасибо нашёл у меня просто другое название.
У меня ещё вопрос : в книге ни разу(сколько прочитал в ней по адо нет) не было описано соединение с субд. Всё делается через datacolumn datatable datarow. Предполагается что я сам должен это само собой прописать или оно само находит куда конектиться?
...
Рейтинг: 0 / 0
21.05.2011, 14:11
    #37272665
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Собственно в этом весь вопрос. Есть код
Код: 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
21.05.2011, 15:23
    #37272713
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Собственно говоря сделал второй вариант по учебнику с использованием 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
22.05.2011, 12:53
    #37273187
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Итак ошибок больше не выдаёт. код прокручивается, но табличка не появляется при заходе в 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
23.05.2011, 16:28
    #37274842
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Неужели никто не может подсказать что не так?
...
Рейтинг: 0 / 0
23.05.2011, 20:55
    #37275374
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
farsНеужели никто не может подсказать что не так?
А SQL-то где? Как Вы данные сохраняете?
...
Рейтинг: 0 / 0
24.05.2011, 11:45
    #37276216
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
ShSerge,

А какой sql имеется ввиду? Нужно было что-то ещё прописать?
...
Рейтинг: 0 / 0
24.05.2011, 13:46
    #37276558
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
Я читаю книжку С# и платформа NET. там ничего про sql и про что то ещё вообще нет разговора
...
Рейтинг: 0 / 0
24.05.2011, 14:39
    #37276677
DevForFun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
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
24.05.2011, 15:10
    #37276734
fars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод данных в Oracle
DevForFun,

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


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