-1
 protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection mycon = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True");
        SqlDataAdapter myadp = new SqlDataAdapter();
        myadp.UpdateCommand = new SqlCommand("Update [orgs] Set [fname]=@fname,[weblnk]=@weblnk,[email]=@email,[cntct]=@cntct,[lctn]=@lctn,[cdscrptn]=@cdscrptn,[bsnstp]=@bsnstp WHERE [cmpny]=" +Label1.Text,mycon);
        myadp.UpdateCommand.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = TextBox1.Text;
        myadp.UpdateCommand.Parameters.Add("@weblnk", SqlDbType.VarChar,80).Value = TextBox3.Text;
        myadp.UpdateCommand.Parameters.Add("@email", SqlDbType.VarChar,80).Value = TextBox4.Text;
        myadp.UpdateCommand.Parameters.Add("@cntct", SqlDbType.VarChar,20).Value = TextBox5.Text;
        myadp.UpdateCommand.Parameters.Add("@lctn", SqlDbType.VarChar,80).Value = TextBox6.Text;
        myadp.UpdateCommand.Parameters.Add("@cdscrptn", SqlDbType.VarChar,600).Value = TextBox7.Text;
        myadp.UpdateCommand.Parameters.Add("@bsnstp", SqlDbType.VarChar,40).Value = TextBox8.Text;
        myadp.UpdateCommand.Connection = mycon;
        mycon.Open();
        myadp.UpdateCommand.ExecuteNonQuery();
        mycon.Close();
    }

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection mycon = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True");
        SqlDataAdapter myadp = new SqlDataAdapter();
        myadp.UpdateCommand = new SqlCommand("Update [orgs] Set [fname]=@fname,[weblnk]=@weblnk,[email]=@email,[cntct]=@cntct,[lctn]=@lctn,[cdscrptn]=@cdscrptn,[bsnstp]=@bsnstp WHERE [cmpny]=@cmpny", mycon);
        myadp.UpdateCommand.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = TextBox1.Text;
        myadp.UpdateCommand.Parameters.Add("@cmpny", SqlDbType.VarChar, 50).Value = TextBox2.Text;
        myadp.UpdateCommand.Parameters.Add("@weblnk", SqlDbType.VarChar,80).Value = TextBox3.Text;
        myadp.UpdateCommand.Parameters.Add("@email", SqlDbType.VarChar,80).Value = TextBox4.Text;
        myadp.UpdateCommand.Parameters.Add("@cntct", SqlDbType.VarChar,20).Value = TextBox5.Text;
        myadp.UpdateCommand.Parameters.Add("@lctn", SqlDbType.VarChar,80).Value = TextBox6.Text;
        myadp.UpdateCommand.Parameters.Add("@cdscrptn", SqlDbType.VarChar,600).Value = TextBox7.Text;
        myadp.UpdateCommand.Parameters.Add("@bsnstp", SqlDbType.VarChar,40).Value = TextBox8.Text;
        myadp.UpdateCommand.Connection = mycon;
        mycon.Open();
        myadp.UpdateCommand.ExecuteNonQuery();
        mycon.Close();
    }

ここでもパラメータ化cmpnyしていますが、まだ機能していません

4

3 に答える 3

4

これはテキスト フィールドであると想定してcmpnyいるため、アポストロフィで囲む必要があります。

WHERE [cmpny]='" + Label1.Text + "'",mycon);

ただし、これはすぐに忘れてください。パラメータは常に使用する必要があります。

WHERE [cmpny]=@cmpny", mycon);

myadp.UpdateCommand.Parameters.AddWithValue("@cmpny", TextBox1.Text);
于 2013-06-03T14:09:10.197 に答える
1
  1. 不要な SqlDataAdapter を取り除きます。

  2. ローカル サーバーで実際のデータベースを取得します。master データベースは、データ用ではありません。

  3. ExecuteNonQuery の戻り値を確認してください。想定した cmpny 値がテーブルに存在しない可能性がありますか?

  4. コードに最小限の例外処理を追加します。

 

using (SqlConnection mycon = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;Integrated Security=True"))
{
    mycon.Open();
    using (SqlCommand cmd = new SqlCommand("Update [orgs] Set [fname]=@fname,[weblnk]=@weblnk,[email]=@email,[cntct]=@cntct,[lctn]=@lctn,[cdscrptn]=@cdscrptn,[bsnstp]=@bsnstp WHERE [cmpny]=@cmpny", mycon))
    {
        cmd.Parameters.Add("@fname", SqlDbType.VarChar, 50).Value = TextBox1.Text;
        // all the other params
        cmd.Parameters.Add("@bsnstp", SqlDbType.VarChar, 40).Value = TextBox8.Text;
        cmd.Parameters.Add("@cmpny", /*correct Datatype here*/).Value = Label1.Text;  // from a Label ?? how does it got there? You should take the value from the actual source
        int affectedRecords = cmd.ExecuteNonQuery();
    }
}
于 2013-06-03T14:58:02.520 に答える
0

Label1.Text にも引用符が含まれている可能性があるため、パラメータ化する必要があります。一般的に、SQL インジェクションを回避するために、SQL でユーザーが入力したすべての値をパラメーター化する必要があります。

これが原因でエラーが発生する可能性があるため、更新コマンドが機能していません。

于 2013-06-03T14:08:44.180 に答える