2012-12-20 87 views
0

我想建立一個數據庫連接來接收使用C#的客戶的詳細信息。我使用SQL服務器2008和Visual Studio 2010一起.....如何使用c#建立數據庫(SQL)連接?

下面是該代碼:

<asp:Textbox id="TxtBox1" runat="server" /> 
<asp:Textbox id="TxtBox2" runat="server" /> 
<asp:Button id="Button1" runat="server" Onclick="Button1_Click" /> 

和代碼隱藏:

protected void Button1_Click(Object sender,EventArgs e) 
{ 
string Text1=TextBox1.Text; 
string Text2=TextBox2.Text; 
string connectionString="Data Source=servername;InitialCatalog=DataBaseNameUserID=sa; Password=YourPassword;" 

SqlConnection sqlConnection=new SqlConnection(connectionString); 

string insertStatement="INSERT INTO TableName(column1,column2) VALUES Txtb1+","+Txtb2"; 

SqlCommand sqlCommand=new SqlCommand(insertStatement,sqlConnection); 

try 
{ 
sqlConnection.Open(); 
sqlCommand.ExecuteNonQuery(); 

} 
finally 
{ 
sqlConnection.Close(); 
} 


} 

我所創建的數據。在它的mdf文件我已創建包含字段的表,但我越來越連接沒有建立錯誤可以任何一個幫助我解決我的問題?

+2

不要在應用程序中使用sa帳戶!這段代碼非常容易受到sql注入攻擊的影響,更不用說連接字符串格式錯誤,並且'inserStatment'行不能編譯。 – asawyer

+0

對不起。,我沒有得到你,你可以請你表達我的SA? – user1918566

+1

您正在使用管理員帳戶。一個完全訪問sql服務器的人。您所需要的只是一個具有寫入權限的帳戶。始終儘可能使用最低權限。 – asawyer

回答

5

此連接字符串錯誤。

string connectionString="Data Source=servername;InitialCatalog=DataBaseNameUserID=sa;" + 
         "Password=YourPassword;" 

應該

string connectionString="Data Source=servername;InitialCatalog=DataBaseName; UserID=sa;" + 
         "Password=YourPassword;" 

但是,千萬不要用在您的應用程序sa用戶。使用Management Studio創建新用戶或更好地使用集成安全性。

另外,你的代碼的其餘部分應該寫成這樣

using(SqlConnection sqlConnection=new SqlConnection(connectionString)) 
{ 
    string insertStatement="INSERT INTO TableName(column1,column2) VALUES (@col1, @col2)"; 
    SqlCommand sqlCommand=new SqlCommand(insertStatement,sqlConnection); 
    sqlCommand.Parameters.AddWithValue("@col1", Text1); 
    sqlCommand.Parameters.AddWithValue("@col2", Text2); 
    sqlConnection.Open(); 
    sqlCommand.ExecuteNonQuery(); 
} 
+0

打敗我也重寫。我總是將SqlCommand放在一個使用塊中。 –

+0

是的,應該也是在SqlCommand上完成的,但是它在SqlConnection上的問題很大 – Steve

+0

點擊提交按鈕後根據上面給出的代碼沒有響應那個代碼 – user1918566

0

此代碼不編譯。你需要一個分號添加到該行:

string connectionString="Data Source=servername;InitialCatalog=DataBaseNameUserID=sa; Password=YourPassword;" 

像這樣:

string connectionString="Data Source=servername;InitialCatalog=DataBaseNameUserID=sa; Password=YourPassword;"; 

您還需要改變這一行:

string insertStatement="INSERT INTO TableName(column1,column2) VALUES Txtb1+","+Txtb2"; 

要這樣:

string insertStatement = "INSERT INTO TableName(column1,column2) VALUES " + Text1 + ", " + Text2; 
0

連接字符串本身可能是問題,windows有一種簡單的方法來創建一個可以測試的有效連接字符串,然後將其複製到應用程序中。我一個幾個月前here寫它:

提示您的應用程序:

  • 正如指出的asawyer,不使用sa帳戶,創建一個登錄與訪問數據庫(S ) 你需要。

  • 使用using聲明

例如:

using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     //here you open and execute the command 
    } 
0

使用的連接字符串如下:

connectionString="Data Source=ServerAddress;Initial Catalog=DataBaseName;Integrated Security=SSPI;User ID=Domain\Username;Password=Password;" 
相關問題