数据无法插入数据库中

时间:2012-07-17 07:43:48

标签: c# asp.net sql-server

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

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

2 个答案:

答案 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)