2011-07-14 16 views
1

私は、次のエラーが発生しますし、問題を見つけることができません。MySQLの構文エラー

あなたのSQL構文でエラーが発生しています。 「文字列」、「文字列」、「文字列」、「文字列」、「文字列」、「文字列」、「The」1行目付近で使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを参照してください。

C#コード:

protected void updateDB(byte[] content, int size, string mime) 
{ 
    string school = DropDownList_School.Text; 
    string subject = DropDownList_Subject.Text; 
    string teacher = DropDownList_Teacher.Text; 
    string course = DropDownList_Class.Text; 
    string unit = TextBox_Unit.Text; 
    string name = TextBox_Name.Text; 
    string date = DateTime.Today.ToString(); 
    string username = System.Web.Security.Membership.GetUser().UserName; 
    MySqlConnection connection = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MySqlConnection"].ConnectionString); 
    connection.Open(); 
    MySqlCommand cmd = new MySqlCommand();//(query, connection); 
    cmd.Connection = connection; 
    cmd.CommandText = "INSERT INTO uploads 
         (@School, @Subject, @Teacher, @Course, @Unit, @Name, @Username, @Size, @MIME, @content) "; 
    cmd.Prepare(); 
    cmd.Parameters.AddWithValue("@School", school); 
    cmd.Parameters.AddWithValue("@Subject", subject); 
    cmd.Parameters.AddWithValue("@Teacher", teacher); 
    cmd.Parameters.AddWithValue("@Course", course); 
    cmd.Parameters.AddWithValue("@Unit", unit); 
    cmd.Parameters.AddWithValue("@Name", name); 
    cmd.Parameters.AddWithValue("@Username", username); 
    cmd.Parameters.AddWithValue("@Size", size); 
    cmd.Parameters.AddWithValue("@MIME", mime); 
    cmd.Parameters.AddWithValue("@content", content); 
    cmd.ExecuteNonQuery(); 
    connection.Close(); 
} 

のConnectionStringが正しいです。

+0

アップロード(field1、field2)VALUES(@ value1、@ value2) – B4NZ41

+0

@Fernando Costa:テーブルのすべてのフィールドに値を挿入する場合、フィールド&VALUESは不要です - OPクエリは有効です –

+1

@OMG Ponies、それらが同じタイプのものであれば、SQLがどの列を間違って推測できるか(なぜなら、間違った順序でそれらを間違って入れ、型が妥当である場合)、なぜならそれらを使用するよい練習は –

答えて

1

INSERT INTO uploads VALUES(...) INSERT INTO uploads(col1, col2, etc...) VALUES(val for col1, val for col2..., etc)などの列の順序を指定することもできます。そうしないと、SQLが「推測」を試みて間違っていると思われる可能性があります。

+0

ありがとう!ええ、私は第二のものと一緒に行かなければならない。準備文に変換してステップを逃した。 –

+0

は私の答えでした、それは間違っていますか? INSERT INTOアップロード(field1、field2)VALUES(@ value1、@ value2)... 0_o – B4NZ41

+0

フィールドもフィールドではなく、最初に回答しました –