2015-11-02 132 views
2

我有一个数据库,其中包含一个客户表,其中包含以下列:CustID,CustName,ICNumber,ContactNumber和Address。它是一个基于服务的数据库。C#插入记录到数据库表

string localdb = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString; 

SqlConnection con = new SqlConnection(localdb); 
con.Open(); 
SqlCommand cmd = new SqlCommand("INSERT INTO Customer(CustID,CustName,ICNumber,ContactNumber,Address)values(@CustID,@CustName,@ICNumber,@ContactNumber,@Address)", con); 

         cmd.Parameters.AddWithValue("@CustID", txtCustID.Text); 
         cmd.Parameters.AddWithValue("@CustName", txtCustName.Text); 
         cmd.Parameters.AddWithValue("@ICNumber", txtICNum.Text); 
         cmd.Parameters.AddWithValue("@ContactNumber", txtContact.Text); 
         cmd.Parameters.AddWithValue("@Address", txtAddress.Text); 
         cmd.ExecuteNonQuery(); 
         con.Close(); 

代码编译并运行。我遇到的问题是cmd.ExecuteNonQuery();被调用后,记录不会被添加到表格中。

为什么记录没有显示在数据库表中?

+1

ExecuteNonQuery返回什么值?另外,你应该使用块来包装你的SqlConnection和SqlCommand。 –

+0

您的代码显示正确,因此这很可能是数据库问题。您是表CustID的主键吗?如果是这样,你不能像你正在做的那样输入它。 –

+0

你使用本地数据库文件吗?如果是这样,你确定你正在寻找正确的文件?您的项目配置可能会制作本地数据库文件的_copy_并插入_that_中。 –

回答

1

您忘记关闭insert命令上的引用"。使用try/catch以避免插入问题很好,例如:

string localdb = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString; 

try 
{ 
    SqlConnection con = new SqlConnection(localdb)) 


    con.Open(); 

    SqlCommand cmd = new SqlCommand("INSERT INTO Customer(CustID, CustName, ICNumber, ContactNumber, Address) VALUES (@CustID, @CustName, @ICNumber, @ContactNumber, @Address)", con); 
    cmd.Parameters.AddWithValue("@CustID", txtCustID.Text); 
    cmd.Parameters.AddWithValue("@CustName", txtCustName.Text); 
    cmd.Parameters.AddWithValue("@ICNumber", txtICNum.Text); 
    cmd.Parameters.AddWithValue("@ContactNumber", txtContact.Text); 
    cmd.Parameters.AddWithValue("@Address", txtAddress.Text); 
    cmd.ExecuteNonQuery(); 
} 
catch 
{ 
    // some errors 
} 
finally 
{ 
    if (con.State == ConnectionState.Open) 
     con.Close(); 
} 
+1

为什么不使用'using'语句? – Sybren

+0

是的,可以使用''语句,但是如果数据库服务器不在,会发生什么? –

+0

你是什么意思? – Sybren