简体   繁体   English

c#.net VS2010中的数据库连接

[英]Database connection in c#.net VS2010

I'm trying to connect to my database in .net using dataset. 我正在尝试使用数据集连接到.net中的数据库。 My code is for a workbook creator. 我的代码适用于工作簿创建者。 The method takes the questions form the DB and put them in list. 该方法将问题从数据库中取出并放入列表中。 When I'm running the code I get the next error: 当我运行代码时,出现下一个错误:

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: 

the code is : 代码是:

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);
    }
}

can you tell me whats wrong ? 你能告诉我怎么了吗? ( in another code its working) (在另一个代码中,它的工作)

It is telling you where the error is: at index 103 in your initialization, ie connection string. 它告诉您错误在哪里:初始化时在索引103处,即连接字符串。

... Format of the initialization string does not conform to specification starting at index 103 ... ...初始化字符串的格式不符合从索引103开始的规范...

The code formatting in your question doesn't allow for an exact counting of characters, but most likely it is because you used a single backslash (instead of an escaped one like everywhere else) for 您问题中的代码格式不允许对字符进行精确计数,但是很可能是因为您使用了一个反斜杠(而不是像其他任何地方一样使用转义的反斜杠)

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

Change it to 更改为

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

Note: The (forward) slash in this fragment " App_Data/bookretorDB1.accdb " should be OK, as Windows APIs typically accept it as a directory separator as well. 注意:此片段“ App_Data/bookretorDB1.accdb ”中的(正)斜杠应该可以,因为Windows API通常也接受它作为目录分隔符。 You may want to, at least for consistency, use a \\\\ here as well. 至少出于一致性考虑,您可能还希望在此处使用\\\\

尝试这样写连接字符串

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM