-3

コードにエラーはありませんが、データベースに情報が表示されません。

        string mysql;
        mysql = "INSERT INTO Cars(Make,Model,Price,[Image]) VALUES ('"
        + tbMake.Text + "','" + tbModel.Text + "'," + tbPrice.Text + ",'" +         FileUpload1.FileName + "')";
        siteDB.InsertCommand = mysql;
        DataList1.DataBind();

乾杯。

4

2 に答える 2

3

Access データベースでは、IMAGE という単語は予約済みのキーワードです。
使用したい場合は、角括弧でカプセル化する必要があります

"INSERT INTO Cars(Make,Model,Price,[Image]) VALUES ......"

これで当面の問題は解決しますが、John Skeet がコメントで指摘したように、テキスト値の適切な書式設定の問題も解決されるため、パラメーター化されたクエリを使用する必要があります。

モデル名 (またはメーカー) に一重引用符が含まれている場合、巧妙に作成されたクエリはどうなりますか?
別の構文エラーがあなたを待っています (そして、私の経験からすると、コードを書き終えて作業する準備ができたときに、あなたを噛むでしょう)

答えを完成させるために、この方法でデータベースにレコードが追加されるかどうかを自由にテストしてください

 mysql = "INSERT INTO Cars(Make,Model,Price,[Image]) VALUES (?,?,?,?)";
 OleDbCommand cmd = new OleDbCommand(mysql, con);
 cmd.Parameters.AddWithValue("@p1", tbMake.Text);
 cmd.Parameters.AddWithValue("@p2", tbModel.Text);
 cmd.Parameters.AddWithValue("@p3", Convert.ToDecimal(tbPrice.Text));  
 cmd.Parameters.AddWithValue("@p4", FileUpload1.FileName);
 cmd.ExecuteNonQuery();
于 2013-05-08T13:14:10.803 に答える
0

私はsiteDBがSQLDataAdapter. この場合、コードは少なくとも次のように変更する必要があります。

string mysql;
        mysql = "INSERT INTO Cars(Make,Model,Price,Image) VALUES ('"
        + tbMake.Text + "','" + tbModel.Text + "'," + tbPrice.Text + ",'" +         FileUpload1.FileName + "')";
        siteDB.InsertCommand = mysql;
        DataList1.DataBind();
于 2013-05-08T13:16:01.953 に答える