-4
  SqlCommand cmd1 = new SqlCommand("INSERT INTO Userinformation(Access)
          VALUES("+nameAccess.Text+") WHERE User_ID='"+userIdaccess.Text+"'",con);
  SqlDataReader dr = cmd1.ExecuteReader();
  if (dr.Read())
  {
    MessageBox.Show("User Access Blocked");
  }
  dr.Close();

以下のように例外を与えています。

"キーワード 'WHERE' 付近の構文が正しくありません"

4

4 に答える 4

5

パラメーター化されたクエリを使用して SQL インジェクションを回避し、クエリを適切にエンコードし、IDisposableリソースをusing ステートメントでラップして、アンマネージ ハンドルのリークを回避します。WHEREまた、INSERT SQL ステートメントには句がありません。

using (SqlCommand cmd1 = new SqlCommand("INSERT INTO Userinformation(Access) VALUES(@NameAccess)", con))
{
    cmd1.Parameters.AddWithValue("@NameAccess", nameAccess.Text);

    using (SqlDataReader dr = cmd1.ExecuteReader())
    {
        if (dr.Read())
        {
            MessageBox.Show("User Access Blocked");
        }
    }
}

+SQL クエリを作成するときに演算子を使用するたびに、間違っています。

于 2012-08-20T12:47:35.540 に答える
1

できませんINSERT .. VALUES... WHERE、それが理由です。無効な構文です。

挿入構文 : http://msdn.microsoft.com/en-us/library/ms174335.aspx

于 2012-08-20T12:51:23.793 に答える
1

INSERT INTO には WHERE 句がありません。UPDATE... WHERE your clause is met を実行するか、ユーザー情報とユーザー ID の両方を新しい行として挿入することができます。

于 2012-08-20T12:51:55.557 に答える
-1

このコードを試してください:

SqlCommand cmd1 = new SqlCommand("INSERT INTO Userinformation(Access)
                                   VALUES('"+nameAccess.Text+"')",con);
SqlDataReader dr = cmd1.ExecuteReader();
if (dr.Read())
{
   MessageBox.Show("User Access Blocked");
}
dr.Close();

クエリを挿入where clause

于 2012-08-20T13:01:22.540 に答える