Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Ошибка при select из БД (View)


Автор: MasterOfCode 28.5.2008, 09:38
Делаю селект из таблицы - View-которое находиться в другой схеме (БД Oracle 9.2):

Код

OdbcConnection cnnOra = new OdbcConnection("Driver={Microsoft ODBC for Oracle};Server=DATA;Uid=sprav;Pwd=password");
OdbcCommand cmdOra = new OdbcCommand("select * from seis.ips_seis_otchet_wellinfo_full t where t.seis_otchet00id_ot in (select t1.id_ot from dbutil.ot_tmp t1 where ID_SESSION = '" + sessionID + "')", cnnOra);
OdbcDataAdapter daOra = new OdbcDataAdapter(cmdOra.CommandText, cnnOra);
DataSet dsOra = new DataSet();
try
{
    cnnOra.Open();
}
    catch (Exception exception)
{
    pRWLog.SetLine("Ошибка при подключении к БД. Error: " + exception.Message);
    MessageBox.Show("Ошибка при подключении к БД. Error: " + exception.Message);
}
try
{
    daOra.Fill(dsOra, "tblOtchet");
}
    catch (Exception exception)
{
    pRWLog.SetLine("Ошибка при выполнении запроса. Error: " + exception);
    MessageBox.Show("Ошибка при выполнении запроса. Error: " + exception);
}


вылетает ошибка:
Код

System.Data.Odbc.OdbcException
   at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode)
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
   at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
   at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Odbc.OdbcCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
   at GeoCatalog.frmMapView.btnShowOtchet_Click(Object sender, EventArgs e) in D:\work\Projects\VisualStudio\ArcViewProject\ArcViewProject\Form2.cs:line 1317



что бы это могло быть?

Автор: MasterOfCode 28.5.2008, 11:39
В догонку, select в базе отрабатывает нормально.  :(

Автор: informatik 28.5.2008, 19:45
Цитата

D:\work\Projects\VisualStudio\ArcViewProject\ArcViewProject\Form2.cs:line 1317


А что именно в этой строке..?

Автор: jonie 28.5.2008, 22:59
хранимок, join-ов и т.п. на вас не хватает....

да вообще кроме callstack-а обычно есть поле description в ошибке...

Автор: MasterOfCode 29.5.2008, 10:36
Цитата(informatik @  28.5.2008,  19:45 Найти цитируемый пост)
А что именно в этой строке..? 


daOra.Fill(dsOra, "tblOtchet");


Цитата(jonie @  28.5.2008,  22:59 Найти цитируемый пост)
хранимок, join-ов и т.п. на вас не хватает....

да вообще кроме callstack-а обычно есть поле description в ошибке... 


Вот именно, дискрипшн пуст у этой ошибки, по этому и вставил просто exception в месагу. 

насчет хранимок-я делал через вьюху, вьюха нормально отрабатывает, запрос из режима дебаг вытаскиваю, пропускаю в PL/SQL Developer, отрабатывает нормально. В чем проблемма может быть?

Автор: MasterOfCode 29.5.2008, 12:03
такая ситуёвина, вообщем вытаскиваю запрос из вьюшки, вставляю в команд, выполняю та же ошибка... пользоватлей менял, тоже все тщетно...

Автор: IApple 29.5.2008, 17:08
... from seis.ips_seis_otchet_wellinfo_full t

уж больно заковыристо и длинно, может перепроверить:
- точно "seis" ?
- ips_seis_otchet_wellinfo_full - не слишком ли длинное название для ODBC ?
- существует ли (темповый ?) dbutil.ot_tmp и возвращает ли он хоть одну строчку (отдельно подзапрос проверить стоит) ?
- sessionID часом не равен null ?
- sessionID "внутре" может апостроф содержит или еще че галимое ?

Автор: MasterOfCode 30.5.2008, 06:04
Цитата

... from seis.ips_seis_otchet_wellinfo_full t

уж больно заковыристо и длинно, может перепроверить:
- точно "seis" ?
- ips_seis_otchet_wellinfo_full - не слишком ли длинное название для ODBC ?
- существует ли (темповый ?) dbutil.ot_tmp и возвращает ли он хоть одну строчку (отдельно подзапрос проверить стоит) ?
- sessionID часом не равен null ?
- sessionID "внутре" может апостроф содержит или еще че галимое ?


запрос правельный, название сократил в трое-не помогло! все проверил на 100 раз.  :(

Автор: MasterOfCode 2.6.2008, 09:13
Судя по всему идет ограничение на количество полей, вот только не известнов DataGridView или в одибиси драйвере! Если я явно прописываю поля вот ручную, то максимум 53 поля, если более, то происходит взрыв.

Автор: akizelokro 4.6.2008, 12:26
попробуй поставить родной оракловский odbc драйвер

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)