Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка, ошибка при установке коннекта с базойSQL 
:(
    Опции темы
СЭНСЭЙ
Дата 19.2.2008, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Привет всем.
Пишу приложение в котором устанавлявается связь с базой
 
Код

SqlConnection con2 = new SqlConnection("server=127.0.0.1;database=db;user id=user;password=******");
SqlCommand cmd2 = new SqlCommand("select * from table",con2);
cmd2.CommandType=CommandType.Text;
cmd2.Connection.Open();


ну далее результат выборки в файл или не важно.
Прога работает несколько раз.Потом начинает выкидывать оштбку на 
Код

cmd2.Connection.Open();

этой строке.
текст ошибки:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at LoadLibraryW(UInt16* )
   at System.EnterpriseServices.Thunk.Security.Init()
   at System.EnterpriseServices.Thunk.Security.SuspendImpersonation()
   at System.EnterpriseServices.Platform.Initialize()
   at System.EnterpriseServices.ResourcePool..ctor(TransactionEndDelegate cb)
   at System.Data.SqlClient.ConnectionPool..ctor(DefaultPoolControl ctrl)
   at System.Data.SqlClient.PoolManager.FindOrCreatePool(DefaultPoolControl ctrl)
   at System.Data.SqlClient.SqlConnectionPoolManager.GetPooledConnection(SqlConnectionString options, Boolean& isInTransaction)
   at System.Data.SqlClient.SqlConnection.Open()
   at updatebakatcashierbase.Form1.getlist()
   at updatebakatcashierbase.Form1.button1_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



getlist() - процедура с кодом которая срабатывает при Form1.button1_Click.


После перезагрузки компа часто ошибка пропадает, но потом появляется опять.

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

PM MAIL   Вверх
Amburgen
Дата 20.2.2008, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 4.12.2006

Репутация: нет
Всего: нет



Какой сервер используеш??? Как в конце закрываеш конект???
PM MAIL   Вверх
HellMasterHaiL
Дата 20.2.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: нет
Всего: 1



если поможет...
вот так я обычно делаю:
Код

Dim conn As New SqlClient.SqlConnection("ConnectionString")
conn.Open()
Dim lcSQl As String = "SelectComand"
Dim comm As New SqlClient.SqlCommand(lcSQl, conn)
comm.CommandType = CommandType.Text
Dim myReader As SqlClient.SqlDataReader = comm.ExecuteReader
If myReader.Read Then
      'bla bla bla
End If

т.е. открываю коннект самого объекта conn, хотя может оно и так и так должно работать

Это сообщение отредактировал(а) HellMasterHaiL - 20.2.2008, 17:03
PM MAIL ICQ   Вверх
Amburgen
Дата 20.2.2008, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 4.12.2006

Репутация: нет
Всего: нет



Я немного не о том...
Просто при подключении к серверу, на котором лежит база данных, он(сервер) создает коннект. Когда приложение закрывается, то убивается конект со стороны самого приложения, а вот сервер может и не узнать, что надо отключть этого пользователя. Запустив прогу пару раз на твоем сервере будет висеть уже несколько коннектов. Рано или поздно ему(серверу) не понравится, что один пользователь занимает столько ресурсов, и он конект не создаст(или не создаст, подумав, что такой уже есть), вернув тебе "ничего". При попытке обращения к "ничему" какраз получим System.NullReferenceException: Object reference not set to an instance of an object.
После ребута сервер перезагружается, и прога снова работает нормально... пока вышеописаное не повторится.
Отсюда вопрос: как ты убиваеш конект?

Это сообщение отредактировал(а) Amburgen - 20.2.2008, 17:28
PM MAIL   Вверх
HellMasterHaiL
Дата 20.2.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: нет
Всего: 1



conn.close
PM MAIL ICQ   Вверх
СЭНСЭЙ
Дата 22.2.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Код

cmd2.Connection.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd2);
DataSet dataset = new DataSet();
da.Fill(dataset,"customers");
DataTable myDataTable = dataset.Tables[0];

cmd2.CommandTimeout=36000;
cmd2.ExecuteNonQuery();
cmd2.Connection.Close();

вот такой код открыл , почитал в таблицу, закрыл.
И я не сервер перегружаю а комп на котром проект компилю.
БД - 2000СКуэЛь

Добавлено через 3 минуты и 26 секунд
неважно что я пишу после 
cmd2.Connection.Open();
после этой строки ошибка.
Для эксперимента вставлял после нее код создания файла - Болт.
PM MAIL   Вверх
HellMasterHaiL
Дата 22.2.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 9.8.2006
Где: Россия, МО, г. Юб илейный

Репутация: нет
Всего: 1



для ДатаАдаптера не нужно предварительно открывать коннекшен, он сам его открывает изакрыает после Fill

в данном контексте, ан скок я понимаю будет так:


Код

SqlDataAdapter da = new SqlDataAdapter(cmd2);
DataSet dataset = new DataSet();
da.Fill(dataset,"customers");
DataTable myDataTable = dataset.Tables[0];


cmd2.Connection.Open();
cmd2.CommandTimeout=36000;
cmd2.ExecuteNonQuery();
cmd2.Connection.Close();

PM MAIL ICQ   Вверх
СЭНСЭЙ
Дата 28.3.2008, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 20.3.2006

Репутация: нет
Всего: нет



Поставил Фреймворк 1.1 с сервис паком 1 и ошибка пропала.
Всем спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.