ورود

View Full Version : سوال: پیغام خطا بانک اطلاعاتی Could not use ''; file already in use.



IranVisual
چهارشنبه 13 شهریور 1387, 10:01 صبح
نمیدونم چرا بعضی موقع که سایتم باز میشه این پیغام رو میده اکثرا درست کار میکنه فقط گاهی این جوری میشه

سایت منhttp://nekacitycenter.com

پیغام :

Server Error in '/' Application.
--------------------------------------------------------------------------------

Could not use ''; file already in use.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Could not use ''; file already in use.

Source Error:


Line 19: Dim obj As New OleDbDataAdapter("select * from TopView order by ID desc", coon)
Line 20: Dim ds As New DataSet
Line 21: coon.Open()
Line 22: obj.Fill(ds, "TopView")
Line 23: View1.DataSource = ds.Tables("TopView")


Source File: D:\Vhosts\nekacitycenter.com\httpdocs\Default.aspx .vb Line: 21

Stack Trace:


[OleDbException (0x80004005): Could not use ''; file already in use.]
System.Data.OleDb.OleDbConnectionInternal..ctor(Ol eDbConnectionString constr, OleDbConnection connection) +1131233
System.Data.OleDb.OleDbConnectionFactory.CreateCon nection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +53
System.Data.ProviderBase.DbConnectionFactory.Creat eNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) +27
System.Data.ProviderBase.DbConnectionFactory.GetCo nnection(DbConnection owningConnection) +47
System.Data.ProviderBase.DbConnectionClosed.OpenCo nnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
System.Data.OleDb.OleDbConnection.Open() +37
_Default.LoadTopicInRequesting() in D:\Vhosts\nekacitycenter.com\httpdocs\Default.aspx .vb:21
_Default.Page_Load(Object sender, EventArgs e) in D:\Vhosts\nekacitycenter.com\httpdocs\Default.aspx .vb:11
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

Behrouz_Rad
چهارشنبه 13 شهریور 1387, 10:08 صبح
Connection رو نبستی.
روال کار رو در Try-Catch-Finally قرار بده. در بخش Finally متد Close شی Connection رو فراخوانی کن.

موفق باشید.

IranVisual
چهارشنبه 13 شهریور 1387, 12:31 عصر
کدهامو نگاه کردم هر جه که connection رو باز کردم بعدشم بستمش
چرا بعضی موقع این اخطار رو میده و بعضی موقع هم نمیده
اگه لطف کنین یک مثال هم بزنین که باید چی کار کنم آخه اصلا نمیدونم Try-Catch-Finally یا Finally چیه
ممنون

milade
چهارشنبه 13 شهریور 1387, 12:41 عصر
چرا بعضی موقع این اخطار رو میده و بعضی موقع هم نمیده

شما مثلا وقتی برای بار اول روی یه باتن کلیک می کنید که یه چیز رو اپ می کنه توی بانک اگه con رو نبندی عیبی نداره اما اگه برای دوم روی باتن کلیک کنی چون توی باتن دستور con.open() هست و کانکشن هم بازه این خطا روی می ده

اگه لطف کنین یک مثال هم بزنین که باید چی کار کنم آخه اصلا نمیدونم Try-Catch-Finally یا Finally چیه

Try-Catch-Finally بیشتر برای کنترل خطاها به کار می ره
Try شروعه که هر بار خونده می شه
Catch در صورت بروز خطا می اد
Finally به هر صورت می اد(چه Try اومده باشه چه Catch)
مثال:

try con.open()
'هر چی می خوای کنی
catch err.number=21
'خطا
finlly con.close
اگه جایی سوالی بود بگو

موفق باشی

IranVisual
چهارشنبه 13 شهریور 1387, 13:43 عصر
err.number=21 این شماره 21 شماره خطاست یا شماره line اگه شماره خطا هستش از کجا باید بفهمیم که شماره خطا چنده
آیا این کدی رو که نوشتید قبل از کدی که پیغام خطا میده وارد کنم
ممنون

milade
چهارشنبه 13 شهریور 1387, 14:21 عصر
سلام دوست عزیز
این کدی که دادم یه مثال بیش نبود و کلا ساختارش اشتباه بود
شما می تونید توی catch هر چیزی بزارید مثلا برای کانکشن شما که نبسته بودید یه شماره اروری داشت دیگه مثلا فرض می کنیم شمارش 1000 بود خوب حالا شما این طوری می نویسید


try
con.open()
'هر چی می خوای کنی
catch
if err.number=1000 then
response.write("error dar safhe")
end if
finally
response.werite("end")
end try
'بازم هر چی می خوای نمایش بدی

خوب حالا جزئیات:
در try کانکشن رو باز کردیم اگه در اینجا اروری روی بده(در کل try) از اون خارج می شه و catch رخ می ده که توی اون گفتیم اگه اررور 1000 بود نمایش بده error dar safhe در غیر این صورت و finally رخ می ده که پرینت می کنه end والا اگه توی try ارور نبود بازم finally رخ می ده
ابهامی بود بفرمایید

موفق باشید

IranVisual
چهارشنبه 13 شهریور 1387, 15:28 عصر
شماره error رو چجوری باید بدست بیارم
از کد های شما هم زیاد سر در نمی آرم
اگه لطف کنین یه کد بزادین که اگه کانکشن من باز برد اونو ببنده فکر کنم مشکل من هم این جوری حل بشه
ممنون

milade
چهارشنبه 13 شهریور 1387, 16:29 عصر
سلام
شما اول شماره اررور رو به دست بیارید
اول من باید بدونم که شما اصلا با کلاس err کار کردید یا نه
به هر حال توی اون رویدادی که کانکشنتون رو باز و بسته می کنید توی اولین خطش می نویسید:

on error goto err
و در اخرین خط می نویسید:

err:
response.write(err.number)
err.clear()

این طوری اگه خطایی پیش بیاد براتون شمارش رو می نویسدش
خوب ما می دونیم مثلا شماره خطا 10 هست که مال نبستن کانکشن هست(مثلا)
خوب بازم توی همون err که گفتم به صورت زیر تصحیح کنید:

if err.number=10 then
con.close()
end if

خوب دیگه تموم
ابهامی بود بفرمایید
بای

IranVisual
چهارشنبه 13 شهریور 1387, 16:48 عصر
ممنون با err و مثال بالایی که زدید توی visualbasic کار کردم
دستون درد نکنه

milade
چهارشنبه 13 شهریور 1387, 17:04 عصر
ممنون با err و مثال بالایی که زدید توی visualbasic کار کردم

پس مشکل حل شد؟