2017-06-06 18 views
1

Visual StudioでC#プロジェクトを実行しています。プロジェクトの目的上、SQL Serverからデータベースを含める必要があります。ここでVisual StudioでSQL Serverのデータベースを使用する

は、私は、SQL Serverで作成されたものです:

create table user1 (
    id int primary key identity, 
    username varchar(50), 
    password varchar(50)); 

次に、Visual Studioの中で、私は、データベースに値を挿入するフォームを作りたい(データベースから読み出しが良い作品!) 。ここに私のコードです:

string sql = "INSERT INTO user1(username, password) VALUES ('"+textBox1.Text + "'+" + textBox2.Text+")"; 

しかし、私は、エラーメッセージが出ます:

System.Data.SqlClient.SqlExceptionを:INSERT文で複数の列がVALUES句で指定された値よりもあります。 。 VALUES句の値の数は、INSERT文で指定された列の数と一致する必要があります。

私は間違っていますか?ユーザーから直接入力してSQLステートメントを構築する明確な

string sql = "INSERT INTO user1(username, password) VALUES ('"+textBox1.Text + "','" + textBox2.Text+"')"; 

答えて

-1

はこのようにそれを行います。これは、SQLインジェクション攻撃でトラックをダウンさせる原因になります。代わりにパラメータ化されたSQLを使用してください。以下のようにします。

string sql = "INSERT INTO user1(username, password) VALUES (@username, @password)"; 
command.CommandText = sql; 
command.Parameters.Add(new SqlParameter("@userName", textBox1.Text)); 
command.Parameters.Add(new SqlParameter("@password", textBox2.Text)); 

私はまた、ユーザーのパスワードをプレーンテキストで保存することを強くお勧めします。これは後でトラックを傷つける世界にあなたを開きます。

+0

ありがとうございました! – pang

+0

これで問題が解決した場合は、回答としてマークしてください。 –

+2

デモ/アンサーコードでもsqlの文字列連結を使用することをお勧めしません。 –

4

スティア:

関連する問題