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 つしかありません。

エラーメッセージが表示されますか? 通常、いくつかの情報を含むエラー メッセージが表示されます。通常は次のようになります。

VALUES 句で指定された値よりも INSERT ステートメントの列が少ない。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 に答える