1

C# で update ステートメントを実行すると、いくつかの問題が発生しました。さて、次のようにクエリ文字列に特定の値を書き込むと

string querystr = "UPDATE Users SET User_FirstName='My Firstname', User_LastName='My Lastname' WHERE User_Username='username'";

しかし、を使用parameter.Addしてクエリ文字列を書き込むと、機能しません。それで、私が問題を抱えているのは、クエリ文字列でパラメーターを機能させる方法です。

これまでの私のスクリプトは次のとおりです

SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=Break; Integrated Security=True");
SqlCommand command = new SqlCommand("SELECT * FROM Users", connection);
command.Connection.Open();

string querystr = "UPDATE Users SET User_FirstName = @FirstName, User_LastName= @LastName WHERE User_Username = @Username";
SqlCommand query = new SqlCommand(querystr, connection);

string User_Username = Session["Username"].ToString();
string User_FirstName = FirstNameEdit.Text;
string User_LastName = LastNameEdit.Text;

query.Parameters.Add("@Username", User_Username);
query.Parameters.Add("@FirstName", User_FirstName);
query.Parameters.Add("@LastName", User_LastName);

query.ExecuteNonQuery();

Session.Add("FirstName", User_FirstName);
Session.Add("LastName", User_LastName);

StatusMessage.Text = "Updated!";

command.Connection.Close();
4

4 に答える 4

2

で追加SqlParameterしていAddます。AddWithValue代わりに使用してください:

query.Parameters.AddwithValue("@Username", User_Username);
于 2013-11-04T09:01:00.010 に答える
1

まず、文字列で定義したのと同じ順序でパラメーターを定義してみてください。以前はそれで問題が発生しましたが、現時点では ADO 接続を使用していたと言わざるを得ません。しかし、それは試してみることができます。おそらく、パラメーターは内部で名前によって参照されません。

(しかし、これが問題ではないことを願っています。うまくいけば、これは修正されています)

このような:

SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=Break; Integrated Security=True");
SqlCommand command = new SqlCommand("SELECT * FROM Users", connection);
command.Connection.Open();

string querystr = "UPDATE Users SET User_FirstName = @FirstName, User_LastName= @LastName WHERE User_Username = @Username";
SqlCommand query = new SqlCommand(querystr, connection);

string User_Username = Session["Username"].ToString();
string User_FirstName = FirstNameEdit.Text;
string User_LastName = LastNameEdit.Text;

// changed the order of adding values here
query.Parameters.Add("@FirstName", User_FirstName);
query.Parameters.Add("@LastName", User_LastName);
query.Parameters.Add("@Username", User_Username);

query.ExecuteNonQuery();

Session.Add("FirstName", User_FirstName);
Session.Add("LastName", User_LastName);

StatusMessage.Text = "Updated!";

command.Connection.Close();
于 2013-11-04T09:01:15.633 に答える