2012-03-26 2 views
0

私のコードは次のようなものです:例外のWindows Phone上のC#でのsqliteを使用してSQLコマンドを実行するときに

SqliteConnection db = new SqliteConnection("uri=file:zongheng.db");db.Open(); 
     SqliteCommand cmd = db.CreateCommand(); 
     cmd.CommandText = "update chapters set status = 0 where bookid=" + bookid + " and chapterid = " + reading_chapter + ";"; 
     cmd.ExecuteNonQuery(); 
     cmd.Dispose(); 
     db.Close(); 
     db.Dispose(); 

     db.Open(); 
     cmd = db.CreateCommand(); 
     cmd.CommandText = ("select max(chapterid), status from chapters where status > 0 and bookid = "+bookid +";"); 
     SqliteDataReader dr = cmd.ExecuteReader(); //exception thrown from here 

呼び出しスタックは、このようなものです:

Community.CsharpSqlite.SQLiteClient.SqliteSyntaxException was unhandled 
    Message=unable to open database file 
    StackTrace: 
     at Community.CsharpSqlite.SQLiteClient.SqliteCommand.GetNextStatement(String pzStart, String& pzTail, Vdbe& pStmt) 
     at Community.CsharpSqlite.SQLiteClient.SqliteCommand.ExecuteReader(CommandBehavior behavior, Boolean want_results, Int32& rows_affected) 
     at Community.CsharpSqlite.SQLiteClient.SqliteCommand.ExecuteReader(CommandBehavior behavior) 
     at Community.CsharpSqlite.SQLiteClient.SqliteCommand.ExecuteReader() 
     at ZonghengReader.Content.OnNavigatedTo(NavigationEventArgs e) 
     at Microsoft.Phone.Controls.PhoneApplicationPage.InternalOnNavigatedTo(NavigationEventArgs e) 
     at System.Windows.Navigation.NavigationService.RaiseNavigated(Object content, Uri uri, NavigationMode mode, Boolean isNavigationInitiator, PhoneApplicationPage existingContentPage, PhoneApplicationPage newContentPage) 
     at System.Windows.Navigation.NavigationService.CompleteNavigation(DependencyObject content, NavigationMode mode) 
     at System.Windows.Navigation.NavigationService.ContentLoader_BeginLoad_Callback(IAsyncResult result) 
     at System.Windows.Navigation.PageResourceContentLoader.BeginLoad_OnUIThread(AsyncCallback userCallback, PageResourceContentLoaderAsyncResult result) 
     at System.Windows.Navigation.PageResourceContentLoader.<>c__DisplayClass4.<BeginLoad>b__0(Object args) 
     at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark) 
     at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark) 
     at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) 
     at System.Delegate.DynamicInvokeOne(Object[] args) 
     at System.MulticastDelegate.DynamicInvokeImpl(Object[] args) 
     at System.Delegate.DynamicInvoke(Object[] args) 
     at System.Windows.Threading.DispatcherOperation.Invoke() 
     at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority) 
     at System.Windows.Threading.Dispatcher.OnInvoke(Object context) 
     at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args) 
     at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args) 
     at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult) 

私は内の異なるクエリを行うことができますどのように同じ接続ですか?何かアドバイス?または任意の文書?どんなアドバイスも高く評価されます。この質問にはまだ回答が、されている場合

答えて

0

は、私はあなたがオブジェクトの処分あなたのコードサンプルでは...知らない:

... 
db.Dispose(); 

db.Open(); 
... 

私は正直にそれが現在のコンテキストでの問題だと思います。データベース接続オブジェクトのDispose()呼び出しを削除するだけで、うまくいくはずです。あなたが本当にオブジェクトで終わったら、それをDispose()することができます。

関連する問題