Oracle + C#
От: drem1lin  
Дата: 07.10.09 13:56
Оценка:
Здраствуйте

Хотелось бы получить помощь по следующей проблеме, как динамически создавать запросы на С# для БД Oracle.
Есть БД, в ней несколько таблиц, как одной и той же кнопкой отправлять запросы, например, INSERT на разные таблицы,
Имя таблицы я знаю, а как формировать списки параметров, которые разного размера и разных типов? если формировать запросы
ручками, то возникает проблема с типами VARCHAR, там требуются '', а как динамически их проставлять в нужных местах я не знаю.
А как пользоваться OleDbCommand я не понял=( в MSDN указаны только самые простые примеры и как быть с динамическим именем таблицы
и динамическим набором параметров.. Может кто просветит как это делается правильно.. Любые исходники были бы желательны.


Заранее спасибо.
Re: Oracle + C#
От: wildwind Россия  
Дата: 07.10.09 18:57
Оценка:
Почитай про параметры в ADO.NET. В терминологии Oracle это bind variables.
Re: Oracle + C#
От: vasya-serega Украина  
Дата: 08.10.09 05:43
Оценка:
Здравствуйте, drem1lin, Вы писали:

D> Хотелось бы получить помощь по следующей проблеме, как динамически создавать запросы на С# для БД Oracle.

D>Есть БД, в ней несколько таблиц, как одной и той же кнопкой отправлять запросы, например, INSERT на разные таблицы,
D>Имя таблицы я знаю, а как формировать списки параметров, которые разного размера и разных типов? если формировать запросы
D>ручками, то возникает проблема с типами VARCHAR, там требуются '', а как динамически их проставлять в нужных местах я не знаю.
D>А как пользоваться OleDbCommand я не понял=( в MSDN указаны только самые простые примеры и как быть с динамическим именем таблицы
D>и динамическим набором параметров.. Может кто просветит как это делается правильно.. Любые исходники были бы желательны.

Насчет VARCHAR не понятно, что имеется в виду. И зачем вам OleDbCommand, если с ораклом надо работать через OracleCommand. Самый простой пример, кот. нашел:
const string strCon = "User Id=SCOTT;Password=TIGER;Data Source=TRAINING;";
    using( OracleConnection con = new OracleConnection(strCon))
    {
        con.Open();
        
        OracleCommand cmd = new OracleCommand("SELECT EMPNO, ENAME FROM EMP WHERE DEPTNO = :DEPT", con );
        //OracleParameter param = cmd.Parameters.Add( ":DEPT", OracleDbType.Decimal );
        //param.Value = new OracleDecimal(10);
        OracleParameter param = cmd.Parameters.Add( ":DEPT", OracleDbType.Int32 );
        param.Value = 10;

        OracleDataReader rdr = cmd.ExecuteReader();
        while( rdr.Read())
            Console.WriteLine("{0} - {1}", rdr["EMPNO"], rdr["ENAME"]);
    }
Re[2]: Oracle + C#
От: drem1lin  
Дата: 08.10.09 14:26
Оценка:
Здравствуйте, vasya-serega, Вы писали:

VS>Здравствуйте, drem1lin, Вы писали:


D>> Хотелось бы получить помощь по следующей проблеме, как динамически создавать запросы на С# для БД Oracle.

D>>Есть БД, в ней несколько таблиц, как одной и той же кнопкой отправлять запросы, например, INSERT на разные таблицы,
D>>Имя таблицы я знаю, а как формировать списки параметров, которые разного размера и разных типов? если формировать запросы
D>>ручками, то возникает проблема с типами VARCHAR, там требуются '', а как динамически их проставлять в нужных местах я не знаю.
D>>А как пользоваться OleDbCommand я не понял=( в MSDN указаны только самые простые примеры и как быть с динамическим именем таблицы
D>>и динамическим набором параметров.. Может кто просветит как это делается правильно.. Любые исходники были бы желательны.

VS>Насчет VARCHAR не понятно, что имеется в виду. И зачем вам OleDbCommand, если с ораклом надо работать через OracleCommand. Самый простой пример, кот. нашел:

VS>
VS>const string strCon = "User Id=SCOTT;Password=TIGER;Data Source=TRAINING;";
VS>    using( OracleConnection con = new OracleConnection(strCon))
VS>    {
VS>        con.Open();
        
VS>        OracleCommand cmd = new OracleCommand("SELECT EMPNO, ENAME FROM EMP WHERE DEPTNO = :DEPT", con );
VS>        //OracleParameter param = cmd.Parameters.Add( ":DEPT", OracleDbType.Decimal );
VS>        //param.Value = new OracleDecimal(10);
VS>        OracleParameter param = cmd.Parameters.Add( ":DEPT", OracleDbType.Int32 );
VS>        param.Value = 10;

VS>        OracleDataReader rdr = cmd.ExecuteReader();
VS>        while( rdr.Read())
VS>            Console.WriteLine("{0} - {1}", rdr["EMPNO"], rdr["ENAME"]);
VS>    }
VS>



вопрос как раз состоит в том, что бы в данном примере использовать динамически определяемое количество параметров с динамическим определением типов
Re[3]: Oracle + C#
От: vasya-serega Украина  
Дата: 09.10.09 06:24
Оценка: +1
08.10.2009 17:26, drem1lin пишет:

> вопрос как раз состоит в том, что бы в данном примере использовать

> динамически определяемое количество параметров с динамическим
> определением типов

Ну так в чем проблема? Используем StringBuilder для формирования строки
запроса. А затем создаем параметры нужно нам типа.
Правда код получится громоздкий, но что делать...
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.