0

我有一个问题要在这里问。为什么我的数据不能插入到我的数据库中?我已经在 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();
}

我的代码有问题吗?请帮助我。我卡在这里。谢谢你。

4

2 回答 2

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 事件中或中。

于 2012-07-17T07:45:19.607 回答
0

您的 SQL 查询缺少其中的年份列:

INSERT INTO CarTab(Brand, Model, Plate, Color, Year, Service)
于 2012-07-17T07:47:27.997 回答