2011-11-29 69 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。 –