PDA

View Full Version : باز و بسته کردن SqlConnection



HamidNch
چهارشنبه 04 آبان 1390, 22:14 عصر
سلام.
آیا این دو تابع برای باز و بسته کردن اتصال به پایگاه داده مناسبند.من از این دستورات استفاده میکنم اما همش با ارروهای مبتنی براینکه دیتابیس درحال اتصال است و یا دیتابیس بسته است مواجه میشوم.مشکل از کجاست!



private static void OpenConnection(SqlConnection conn)
{
if ((conn != null) && (conn.State == ConnectionState.Closed ||
conn.State == ConnectionState.Connecting ||
conn.State == ConnectionState.Fetching || conn.State == ConnectionState.Executing
|| conn.State == ConnectionState.Broken)) { conn.Open(); }
}
private static void CloseConnection(SqlConnection conn)
{
if ((conn != null) && (conn.State == ConnectionState.Open ||
conn.State == ConnectionState.Connecting ||
conn.State == ConnectionState.Fetching ||
conn.State == ConnectionState.Executing ||
conn.State == ConnectionState.Broken)) { conn.Close(); conn.Dispose(); }
}

fa_karoon
پنج شنبه 05 آبان 1390, 10:28 صبح
به نظر می رسه کدتون درست هست
من از کد زیر تو پروژه هام استفاده می کنم شاید به دردتون بخوره

Public ReadOnly Property IsOpen() As Boolean
Get

If TheConnection.State = ConnectionState.Open Then
Return True
Else
Return False
End If
End Get

End Property
Public Sub Open()
If Not (IsOpen) Then
TheConnection.Open()
End If

End Sub

Public Sub Close()
If IsOpen() Then
TheConnection.Close()
End If
End Sub

HamidNch
پنج شنبه 05 آبان 1390, 11:51 صبح
من گاهی اوقات با این ارورها مواجه میشم:
ExecuteNonQuery requires an open and available Connection. The connection's current state is connecting.
ExecuteReader requires an open and available Connection. The connection's current state is connecting.
البته در مورد ارور دوم هم بگم که DataReader ها رو هم بعد ار اتمام کار Close کردم اما بازم بعضی اوقات این ارور رو میدهد.

fa_karoon
پنج شنبه 05 آبان 1390, 12:36 عصر
تنها چیزی که الان به ذهنم می رسه اینکه
دقت کنید که حتما قبل از دستورات عملیات مربوط به پایگاه حتما Connection رو Open کرده باشید و بعد از اتمام اونها هم حتما Connection رو Close کرده باشید
می دونم این موضوع رو می دونید اما شاید جایی لابه لای کدها فراموش کرده باشید
موفق و پیروز

Saman Hashemi
پنج شنبه 05 آبان 1390, 21:14 عصر
برای اشیایی که نیاز به open و close دارن از using استفاده کنید،خودش این عملیات مدیریت میکنه...!
using(){}