2012-02-29 17 views
1

データセットを使用して.netでデータベースに接続しようとしています。私のコードはワークブックの作成者のためのものです。このメソッドは、DBから質問を受け取り、リストに入れます。私は、コードを実行しているとき、私は次のエラーを取得する:データベース接続をc#.net VS2010

System.ArgumentException was unhandled by user code 
    Message=Format of the initialization string does not conform to specification starting at index 103. 
    Source=System.Data 
    StackTrace: 
     at System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) 
     at System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) 
     at System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) 
     at System.Data.OleDb.OleDbConnectionString..ctor(String connectionString, Boolean validate) 
     at System.Data.OleDb.OleDbConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) 
     at System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) 
     at System.Data.OleDb.OleDbConnection.ConnectionString_Set(String value) 
     at System.Data.OleDb.OleDbConnection.set_ConnectionString(String value) 
     at System.Data.OleDb.OleDbConnection..ctor(String connectionString) 
     at System.Data.OleDb.OleDbDataAdapter..ctor(String selectCommandText, String selectConnectionString) 
     at bookPage.getPageDB() in c:\Users\asaf_pearl\Documents\Visual Studio 2010\WebSites\bookreator\App_Code\question.cs:line 188 
     at book.Page_init(Object sender, EventArgs e) in c:\Users\asaf_pearl\Documents\Visual Studio 2010\WebSites\bookreator\book.aspx.cs:line 23 
     at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) 
     at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 
     at System.Web.UI.Control.OnInit(EventArgs e) 
     at System.Web.UI.Page.OnInit(EventArgs e) 
     at System.Web.UI.Control.InitRecursive(Control namingContainer) 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    InnerException: 

コードは次のとおりですいただきました間違った

public void getPageDB() 
{ 
    string ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data 
    Source=C:\\Users\\asaf_pearl\\Documents\\Visual Studio 
    2010\\WebSites\bookreator\\App_Data/bookretorDB1.accdb" + ";"; 
    string myQuery = "select from fivebaloons where page=1"; 

    OleDbDataAdapter oda = new OleDbDataAdapter (myQuery, ConnStr); 
    DataSet ds = new DataSet(); 
    oda.Fill(ds); 
    foreach(DataRow pRow in ds.Tables[0].Rows){ 

     _currentQuest.question=pRow["question"].ToString(); 
     _currentQuest.questionNumber =Convert.ToInt16(pRow["questionnumber"]); 
     _currentQuest.rightAnswer=pRow["answer"].ToString(); 
     _currentQuest.goodFeedBack=pRow["goodfeedback"].ToString(); 
     _currentQuest.badFeedBack1=pRow["badfeedback1"].ToString(); 
     _currentQuest.badFeedBack2=pRow["badfeedback2"].ToString(); 
     AllQuestions.Add(_currentQuest); 
    } 
} 

あなたは私を伝えることができますか? (別のコードではその作業中)

+0

のような接続文字列を書いてみるいただきました。この違いとコードの作業?明らかに、接続文字列には若干の違いがあります。 – Alex

答えて

1

エラーがどこにあるのかを示しています。初期化のインデックス103、つまり接続文字列です。

... Format of the initialization string does not conform to specification starting at index 103 ...

あなたの質問の書式コードは文字の正確なカウントを可能にしていますが、

string connStr = "... WebSites\bookreator ..."; 
のために単一のバックスラッシュ(の代わりに、他の場所のようなエスケープ1)を使用しているため、それが最も可能性はありません

変更それ

string connStr = "... WebSite\\bookreator ..."; 

への注意:WindowsのAPIは、通常のディレクトリとしてそれを受け入れるよう(前方)この断片にスラッシュ「 App_Data/bookretorDB1.accdb」は、OKでなければなりませんセパレータも同様です。少なくとも一貫性を保つために、ここでも \\を使用することをお勧めします。

+0

ニースキャッチ、また、 'SELECT FROM ....'には* – Steve

+0

がないことに注意してください。 – code4life

0

この

string constr = string.Format("Data Source={0};Initial Catalog={1};Integrated Security=SSPI", YourServerName,YourDatabaseName); 
関連する問題