2012-02-29 4 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 ..."; 
에 대해 하나의 백 슬래시 (대신 다른 곳에서 같은 탈출을)를 사용하기 때문에 그것이 가장 가능성이되지 않습니다

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

참고

변경을 : (감기)는 윈도우의 API는 일반적으로 디렉토리로 그것을 받아,이 조각 "App_Data/bookretorDB1.accdb"확인해야한다에 슬래시 분리기도 있습니다. 적어도 일관성을 위해 여기에 \\을 사용할 수도 있습니다.

+0

좋은 선택, 'SELECT FROM ....'에는 * – Steve

+0

부족함이 있습니다. – code4life

0

string constr = string.Format("Data Source={0};Initial Catalog={1};Integrated Security=SSPI", YourServerName,YourDatabaseName);