помогите с C # + Oracle 11g - PullRequest
       22

помогите с C # + Oracle 11g

0 голосов
/ 09 ноября 2010

У меня есть этот код для быстрого поиска.он отлично работает в sqlCE

SqlCeCommand Cmd;
Cmd.CommandType = CommandType.TableDirect;
Cmd.CommandText = "MEN";
Cmd.IndexName = "A";
Cmd.SetRange(DbRangeOptions.Match, new object[] { R[15].ToString().Trim(), MyDate }, null);
SqlCeDataReader read = Cmd.ExecuteReader();
while (read.Read())
{
  TmpBAR = read[0].ToString();
}
read.Dispose();
if (TmpBAR == "")
{
  //return false;
}

я пытаюсь преобразовать в оракула, как это:

OracleCommand Cmd;
Cmd.CommandType = CommandType.TableDirect;
Cmd.CommandText = "MEN";
Cmd.IndexName = "A";
Cmd.SetRange(DbRangeOptions.Match, new object[] { R[15].ToString().Trim(), MyDate }, null);
OracleDataReader read = Cmd.ExecuteReader();
while (read.Read())
{
  TmpBAR = read[0].ToString();
}
read.Dispose();
if (TmpBAR == "")
{
  //return false;
 }

, и я получаю ошибку:

System.Data.OracleClient.OracleCommand' does not contain a definition for 'IndexName' and no extension method 'IndexName' accepting a first argument of type 'System.Data.OracleClient.OracleCommand' could be found (are you missing a using directive or an assembly reference?)

и эта ошибка:

System.Data.OracleClient.OracleCommand' does not contain a definition for 'SetRange' and no extension method 'SetRange' accepting a first argument of type 'System.Data.OracleClient.OracleCommand' could be found (are you missing a using directive or an assembly reference?)

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Вам нужно будет использовать CommandType.Text и создать соответствующий оператор SQL для выбора из таблицы MEN. Функциональность, которую вы используете в настоящее время, специфична для SQLCE и не поддерживается поставщиком ORACLE.

Вам не нужно беспокоиться об указании имени индекса, оптимизатор ORACLE SQL автоматически выберет соответствующий индекс, если он существует.

Я бы также предложил не использовать предоставленный Microsoft поставщик ORACLE, поскольку это устарело в Framework 4.0. Провайдер ORACLE от Oracle очень хорош.

ODP.NET - http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html

0 голосов
/ 09 ноября 2010

Компоненты Oracle ADO.NET отличаются от компонентов SQL CE.Я бы предложил привести все к интерфейсу IDbCommand , если вам нужна поддержка обоих провайдеров, и вы получите набор функций, который должен поддерживаться обоими провайдерами.Если вам не нужно поддерживать обоих провайдеров, вам просто нужно найти другой синтаксис, чтобы сделать то же самое в объекте Oracle Command.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...