2013-07-16 22 views
0

我創建了一個數據庫實用程序,我似乎無法獲取正確的連接字符串。ConnectionString數據庫c#

SqlConnection conn = new SqlConnection(); 
    conn.ConnectionString = 
     "Data Source=.\\SQLExpress;" + 
     "User Instance=true;" + 
     "Integrated Security=true;" + 
     "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;"; 

我相信這是正確的格式。至於數據源,我的sql服務器是運行sql server 2008 R2的SQLExpress。我的數據庫被命名爲ConfigurationData。我錯過了什麼嗎?

當我運行它時,它會打開數據庫 - 我認爲它確實是因爲它不通過異常 - 但是當我嘗試插入表中時,它實際上並未插入它,但它執行該命令。

conn.Open(); 
     try 
     { 

      SqlCommand comm = new SqlCommand("INSERT INTO Test " + "(id,number) " + " VALUES(" + 10 + " , " + 12 + ")", conn); 
      comm.ExecuteNonQuery(); 
      Console.WriteLine("Database is created successfully", "MyProgram"); 
     } 
     catch (Exception ex) 
     { 

     } 
     finally 
     { 
      if ((conn.State == ConnectionState.Open)) 
      { 
       conn.Close(); 
      } 
     } 
+1

最有可能您正在複製每次構建/調試時間的.mdf文件,該文件用您的解決方案中的副本覆蓋程序正在使用的數據庫。你能證實這一點嗎? –

+0

你如何檢查它是否被插入 – Jonesopolis

+0

我是數據庫的新手,他們檢查的方式是當我插入表格時,我放置一個斷點並打開表格來檢查它是否被插入 – haysam

回答

1

編輯 只記得,我已經回答了類似的問題而回。檢查出來:

Why can't I insert data into local database (SQL Compact Edition) with C#?

我不認爲它是連接字符串的問題。但是,供大家參考,指一個很好的網站,是http://www.connectionstrings.com/sql-server-2008/

您將需要其中之一:

附加數據庫文件,位於數據目錄,在連接到本地SQL Server Express實例

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname; 
Trusted_Connection=Yes; 

上連接附加數據庫文件到本地SQL Server Express實例

Server=.\SQLExpress;AttachDbFilename=C:\MyFolder\MyDataFile.mdf;Database=dbname; 
Trusted_Connection=Yes; 

上的本地SQL S使用的用戶實例erver Express實例 用戶實例功能在連接期間實時創建新的SQL Server實例。這僅適用於本地SQL Server實例,並且僅在通過本地命名管道使用Windows身份驗證進行連接時才起作用。目的是爲了能夠爲計算機上具有有限管理權限的用戶創建完整權限SQL

服務器實例。

Data Source=.\SQLExpress;Integrated Security=true; 
AttachDbFilename=C:\MyFolder\MyDataFile.mdf;User Instance=true; 

要使用用戶實例功能,您需要在SQL Server上啓用它。這是通過執行以下命令完成的:sp_configure'user instances enabled','1'。要禁用該功能,請執行sp_configure'enabled instances enabled','0'。

+0

它會拋出錯誤並指出。\無法識別的轉義序列。它會被發現,如果是。\\? – haysam

+0

另外,檢查更新的答案。 – reggie

+0

請勿使用「\\」。格式化字符串,如@「C:\ ... \」 – DanteTheEgregore

0

試(本地),而不是點,點是不是在Win XP認可

conn.ConnectionString = 
     "Data Source=(local)\\SQLExpress;" + 
     "User Instance=true;" + 
     "Integrated Security=true;" + 
     "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;"; 
0

爲什麼不直接使用SqlConnectionStringBuilder類?:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 
builder.DataSource = @"(local)\SQLExpress"; 
builder.UserInstance = true; 
builder.IntegratedSecurity = true; 
builder.AttachDBFilename = "|DataDirectory|ConfigurationData.mdf"; 
SqlConnection conn = new SqlConnection(builder.ConnectionString()); 

輸出:

"Data Source=(local)\\SQLExpress;AttachDbFilename=|DataDirectory|ConfigurationData.mdf;Integrated Security=True;User Instance=True" 
0

你是SQL語句也是不對的,你應該使用參數,但這裏是你應該有的

SqlCommand comm = new SqlCommand("INSERT INTO Test (id, number) VALUES('" + 10 + " ', '" + 12 + "')", conn); 
0

其中一種方法是在web中添加連接字符串。config文件,如下所示:

Jus單擊數據庫瀏覽器上的數據庫屬性。在那裏你會發現其屬性中的連接字符串。 Jus將它添加到下面的連接字符串中。

<configuration> 
    <connectionStrings> 
     <add name="ConnectionName" connectionString="your connection string" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
</configuration> 

然後在頁面,您可以將其存儲在字符串或直接引用您的網絡連接,如下圖所示:

Connection con=new SqlConnection(); 
con.ConnectionString=ConfigurationManager.ConnectionStrings["connString"].ToString(); 

,我懷疑你的INSERT語句未正確申報。

就試試這個:

SqlCommand comm = new SqlCommand("INSERT INTO Test (id,number) VALUES('10' ,'12')", con); 

這就是從我的一部分...希望它幫助你..

相關問題