2011-11-29 63 views
0

我在將一個TextBox值插入到SqlServer表中時出現問題。我編寫了該代碼,但是當我運行該表單時,會引發一個運行時錯誤:「與SQL Server建立連接時發生網絡相關或實例特定的錯誤」。提前致謝。將文本框值插入到sqlserver表中

public partial class Add_Client : Form 
{ 
    SqlConnection clientConnection; 
    string connString; 
    SqlCommand insertCommand; 

    public Add_Client() 
    { 
     InitializeComponent(); 
     connString = "Data Source=.//INSTANCE2;Initial Catalog=Clients;Integrated Security=True"; 
     clientConnection = new SqlConnection(); 
     clientConnection.ConnectionString = connString; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      SqlCommand insertCommand = new SqlCommand(); 
      insertCommand.Connection = clientConnection; 
      insertCommand.CommandText = "INSERT INTO Client_Info values(@Client_Name,@AutorizationNo,@IssueType,@Status)"; 
      insertCommand.Parameters.Add("@Client_Name",SqlDbType.NVarChar,60).Value=txt_Name.Text; 
      insertCommand.Parameters.Add("@AutorizationNo", SqlDbType.Int, 60).Value =txt_Auth.Text.ToString(); 
      insertCommand.Parameters.Add("@Issue", SqlDbType.Text, 200).Value =txt_Iss.Text; 
      insertCommand.Parameters.Add("@Status", SqlDbType.TexT, 15).Value=txt_sta.TexT; 
      insertCommand.Connection.Open(); 
      insertCommand.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      if (clientConnection != null) 
      { 
       clientConnection.Close(); 
      } 
     } 
    } 
} 
+0

聽起來像你的連接字符串是錯誤的或者SQL Server沒有啓動。 – Simon

+1

具有異常處理的快速指針。如果您只是將'Exception'冒泡回調用代碼,則不需要'try-catch-finally'語句的'catch'部分。 –

+0

也糾正你的參數名稱,他們不能有空格。將'@Date To Memorize'更改爲'@ DateToMemorize'或'@ Date_To_Memorize' – Reniuz

回答

0

在連接字符串中的主機名中的.//不應該在那裏。我不希望它能工作。你應該只有機器名稱本身。

0

你需要檢查你的連接字符串,U可以發現它有用:

http://www.connectionstrings.com/

如果您知道有關連接字符串,那麼請檢查您的數據庫狀態。

+0

我在其他項目中使用過此連接,效果很好 –

+1

您確定嗎?它通常是ServerName \ InstanceName我會有預期的。\\ INstance2 –

+0

對不起,\ \被顛倒,你是對的 –

0

SQL中的參數名稱不應包含空格。我想要使​​用空格將參數名稱括在方括號中。

+0

我做到了,謝謝。 carls化的 –

0

您的連接字符串是否正確?這基本上意味着它無法連接到服務器。

而且,只是一個提示 - 我不會做這樣的:

insertCommand.Parameters.Add("@Autorization No", SqlDbType.Int, 60).Value =txt_Auth.Text.ToString(); 

...

它只是自尋煩惱。相反,複製它,消毒它,並確保它不會導致異常。

+0

:sqlserver中的表由3列命名(Client_Name,Autorization No,Issue) –

+0

我也不會......'@Autorization No' - 參數帶空格嗎? :) – Reniuz

+0

我在表格的列名中也沒有空格,他們是PIA。 –