2016-08-31 30 views
-1

私は入力をテキストボックスから保存するアプリケーションを作成していますが、Submitをクリックすると、データベースにテキストボックスに何を入力してもこのエラーが発生します。エラー "System.Data.SqlClient.SqlException"がアプリケーションのデバッグ時に発生しました

System.Data.dllで 'System.Data.SqlClient.SqlException'型の例外が発生しましたが、ユーザーコードで処理されませんでした。追加情報:キーワード「表」の近くの構文が正しくありません。

ここに次のコードがあります。

protected void Button1_Click(object sender, EventArgs e) 
    { 
     String p = UniqueNumber(); 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings 
      ["ConnectionString"].ConnectionString); 
     con.Open(); 
     String str = "insert into Table(uniqueno, name, age, number) values('" 
      + Label1.Text + "','" + txtName.Text + "','" + txtAge.Text + "','" + txtNumber.Text + "')"; 
     SqlCommand cmd = new SqlCommand(str, con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     Session["id"] = Label1.Text; 
     Session["name"] = txtName.Text; 
     try 
     { 
      Response.Redirect("unique.aspx"); 
     } 
     catch 
     { 
      Label1.Text = "Please enter correct details...."; 
      this.Label1.ForeColor = Color.Red; 
     } 
    } 
+2

SQLインジェクションの脆弱性。パラメータ化されたクエリを使用する –

+0

実際には、アプリケーションを実行するときではなく、アプリケーションをデバッグしようとしているときにのみエラーが発生するのでしょうか?実行中に問題が発生した場合は、「テーブルに挿入しようとしたとき」に質問を変更してください。 –

+0

もこの行を変更してください。Response.Redirect( "unique.aspx"); '' Response.Redirect( "〜unique.aspx" ); 'PostBacksに慣れていて、それがどのように働いているのかと期待しています。SQL Insertコマンドに渡す値をデバッグするときに、空でもなく空でもないことを確認し、' Parameterized Query's'を読み、 'Table'はSQLの予約語であるため、この' [Table] 'のような角括弧で囲んだ名前です – MethodMan

答えて

0

"Table"はキーワードですが、テーブルにデータを保存している可能性はありますが、SQLサーバーではクエリできません。

驚いたことに、Tableという名前のテーブルを持つことができますが、選択しようとするとエラーが発生します。 @seth flowerが述べたように、SQLインジェクションの脆弱性を避けてみてください。

enter image description here

関連する問題