我在这里问了一个问题。为什么我的数据不能插入我的数据库?我已经在SQL Server中创建了一个表。这是我的代码行供您参考。
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
SqlCommand cmd = new SqlCommand("Insert into CarTab(Brand,Model,Plate,Color,Service) Values (@brand,@model,@plate,@color,@year,@service)",conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@brand", Label1.Text);
cmd.Parameters.AddWithValue("@model", Label2.Text);
cmd.Parameters.AddWithValue("@plate", Label3.Text);
cmd.Parameters.AddWithValue("@color", Label4.Text);
cmd.Parameters.AddWithValue("@year", Label5.Text);
cmd.Parameters.AddWithValue("@service", Label6.Text);
conn.Open();
cmd.ExecuteNonQuery();
}
我的代码有问题吗?请帮助我。我被困在这里。谢谢。
答案 0 :(得分:7)
您的命令语句中似乎缺少Year
:
SqlCommand cmd = new SqlCommand(
"Insert into CarTab(Brand,Model,Plate,Color,Year,Service)
Values (@brand,@model,@plate,@color,@year,@service)",
conn);
您提供6个参数,但只有5列。
您收到错误消息了吗?通常,会出现一些包含某些信息的错误消息;它通常看起来像这样:
INSERT语句中的列数少于指定的值 在VALUES条款中。 VALUES子句中的值的数量必须为 匹配INSERT语句中指定的列数。
编辑。
如果您仍然遇到问题,接下来要做的是查看实际的错误消息。让我们稍微重构一下你的代码:
using(SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString))
{
using(SqlCommand cmd = new SqlCommand("Insert into CarTab(Brand,Model,Plate,Color,Service) Values (@brand,@model,@plate,@color,@year,@service)",conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@brand", Label1.Text);
cmd.Parameters.AddWithValue("@model", Label2.Text);
cmd.Parameters.AddWithValue("@plate", Label3.Text);
cmd.Parameters.AddWithValue("@color", Label4.Text);
cmd.Parameters.AddWithValue("@year", Label5.Text);
cmd.Parameters.AddWithValue("@service", Label6.Text);
conn.Open();
try
{
cmd.ExecuteNonQuery();
}
catch(Exception e)
{
string errorMessage = e.Message;
//Set a label on the client to see the error message, or pause in the debugger and examine the property here.
//throw;
}
}
}
如果你没有看到任何错误,这就是我最初困惑的原因,那么实际上可能是因为你的事件处理程序没有接线;有时,设计人员会将事件处理程序取消,这意味着您的点击和实际代码将被取消关联并且永远无法运行。
检查你有:
Button2.Click += Button2_Click;
在InitializeComponent
或构造函数或Load事件中。
答案 1 :(得分:0)
您的SQL查询缺少其中的年份列:
INSERT INTO CarTab(Brand, Model, Plate, Color, Year, Service)