-1

なぜこのメッセージが表示されるのか本当にわかりません

ExecuteNonQuery:CommandTextプロパティが初期化されていません

私のコードにはエラーがまったくなく、それを見ると見栄えがします。私は解決策を求めてウェブを見てきましたが、何も見つかりません。これは私のコードです。どんな助けでも大歓迎です。

SqlConnection conn = new SqlConnection("Data Source=VALONS;Initial Catalog=gym;Integrated Security=True");
    SqlCommand cmd;
    public NewMem()
    {
        InitializeComponent();
    }

    private void label2_Click(object sender, EventArgs e)
    {

    }

    private void NewMem_Load(object sender, EventArgs e)
    {

    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
            conn.Open();
            cmd = new SqlCommand("Insert into member(SocialSecurity, Name, City, Street, Zipcode, Email, Phone) values ('" + textSocialSecurity + "','" + textName + "','" + textCity + "','" + textStreet + "','" + textZipCode + "','" + textEmail + "','" + textPhone + "')" + conn);
            cmd.ExecuteNonQuery();
            MessageBox.Show("You have successfully inserted values in Member");
            conn.Close();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);

        }
    }
4

3 に答える 3

0

この問題は、datataypeの不一致に関連している可能性があります。SQLインジェクションの問題があるため、直接値ではなくパラメータを使用してみてください。

cmd = new SqlCommand("Insert into member(SocialSecurity, Name, City, Street, Zipcode, Email, Phone) values (:1,:2,:3,:4,:5,:6,:7)", conn);
cmd.parameters.clear();
cmd.parameters.Add("1", textSocialSecurity);
cmd.parameters.Add("2", textName);
...
cmd.parameters.Add("7", textPhone);
cmd.ExecuteNonQuery();
于 2013-02-07T19:53:15.317 に答える
0

あなたはおそらくこれをしなければなりません:

cmd.CommandText = @"Insert into member(SocialSecurity, Name, City, Street, Zipcode, Email, Phone) values ('" + textSocialSecurity + "','" + textName + "','" + textCity + "','" + textStreet + "','" + textZipCode + "','" + textEmail + "','" + textPhone + "')";

しかし、あなたは深刻な問題を抱えています。そして、あなたはSQLインジェクションを受け入れています。

クエリをパラメータ化します。

于 2013-02-07T19:56:06.190 に答える
-1

コマンドは、それがどのタイプであるかを通知する必要があります。ストアドプロシージャ、コマンドテキストなど。メソッドを思い出せませんが、それが問題です。

これは段階的に行うことをお勧めします。接続を開き、コマンドオブジェクトを作成して接続プロパティを設定し、そのタイプを設定してSQLテキストを実行します。また、SQLインジェクションの問題を回避するために、パラメーターを含むストアドプロシージャを使用することをお勧めします。

于 2013-02-07T19:53:53.037 に答える