C#插入记录到数据库表
问题描述:
我有一个数据库,其中包含一个客户表,其中包含以下列: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();
被调用后,记录不会被添加到表格中。
为什么记录没有显示在数据库表中?
答
您忘记关闭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();
}
ExecuteNonQuery返回什么值?另外,你应该使用块来包装你的SqlConnection和SqlCommand。 –
您的代码显示正确,因此这很可能是数据库问题。您是表CustID的主键吗?如果是这样,你不能像你正在做的那样输入它。 –
你使用本地数据库文件吗?如果是这样,你确定你正在寻找正确的文件?您的项目配置可能会制作本地数据库文件的_copy_并插入_that_中。 –