where
句を使用して、データベースの特定の行にデータを追加する方法を教えてください。ここでWhere句を使用してSQLデータベースにデータを挿入します。
は、私が試したものです:
"Insert into table1 (name, address) values ('" + textbox1.Text+ "', '"+textbox2.Text+"')
where (name ='"+textbox1.Text+"')"
where
句を使用して、データベースの特定の行にデータを追加する方法を教えてください。ここでWhere句を使用してSQLデータベースにデータを挿入します。
は、私が試したものです:
"Insert into table1 (name, address) values ('" + textbox1.Text+ "', '"+textbox2.Text+"')
where (name ='"+textbox1.Text+"')"
あなたは「どこ」句inseertに挿入することはできませんが、新しいレコードを追加するためです。あなたの更新は、次に使用する場合:
Update table1 set
name = '" + textbox1.Text + "',
address ='" + textbox2.Text+ "'
where (name ='"+textbox1.Text+"')
または挿入する必要があります:
"Insert into table1 (name, address) values ('" + textbox1.Text+
"','"+textbox2.Text+"')"
しかし、すべてがSQLインジェクションに対して検証されていることを確認します。上記をパラメータ化する。
おそらく、元のユーザーと同じ欠陥を使用して解決策を提供するのではなく、パラメータ化を実証することをお勧めします。 – Takarii
まず、データベース入力用の文字列を決して連結しないでください。それはSQLインジェクション攻撃に対してあなたを広げてくれます。詳細については、this MSDN articleを参照してください。
第2に、WHERE
句の挿入は行いません。あなたはWHERE
例でUPDATE
を行うことができます:
INSERT INTO TABLE (col1, col2) VALUES (val1, val2)
UPDATE TABLE SET col1 = val1, col2 = val2 WHERE col3 = somevalue
は、あなたのケースでは、たとえば、あなたは
sql = "INSERT INTO table1 (name, address) VALUES (@textbox1,@textbox2)";
SqlCommand query = new SqlCommand("connection string", sql);
query.Parameters.AddWithValue(@textbox1, textbox1.Text);
query.Parameters.AddWithValue(@textbox2, textbox2.Text);
あなたが知っている場合(パラメータを含む)の挿入のためにこれを書きたいと思いますAddWithValue
の代わりにデータベースのフィールドタイプを使用する代わりに、次の構文を使用します。
query.Parameters.Add(@parametername, SqlDBType.Type,size).Value = somevalue;
ここで、SqlDBType.Typeはデータベースのフィールドタイプ(VarChar、Int、VarBinaryなど)で、size
はフィールドの値です。私のDBフィールドはVARCHAR(500)であった場合は、その後、私のパラメータ設定は
query.Parameters.Add(@parametername, SqlDBType.VarChar, 500).Value = somevalue;
になります。更新ではなく、挿入したい場合は、以下でSQL文字列を置き換えることができます。注:識別子を使用してレコードを更新する - name
をWHERE
句として使用することは悪い習慣です。
sql = "UPDATE table1 SET name = @textbox1, address = @textbox2 WHERE xyz";
パラメータを使用すると、予期しない値をボックスに入れて不正なコードを実行することを防ぐことができます。現在のように連結された文字列を使用すると、攻撃者がデータベース全体を侵害する可能性があります。
Upvotedの代わりに[Parameters.Add](https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters(v = vs.110).aspx)を使用することをお勧めします。 AddWithValueを使用して、パラメータのSqlDbTypeを指定します。 AddWithValueは、古い関連の質問に基づいた特定のシナリオAFAIKでいくつかの問題を引き起こすことが知られています。 –
私はそれがdbtypeが何であるかを知らないことが原因でした。そうでなければ、私は常にsqldbtype.typeを追加して、それを反映するために私の答えを更新します。 – Takarii
INSERT
ステートメントを使用してSQL Serverデータベースにレコードを挿入する場合、where句は必要ありません。あなたはそれを動作させるために、以下のようにコードを変更する必要があります。
"Insert into table1 (name, address) values ('" + textbox1.Text+ "', '"+textbox2.Text+"')
にSQLのINSERT文の2つの形式を以下の通りです:
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
INSERT INTO table_name
VALUES (value1,value2,value3,...);
あなたがここにINSERT
SQL文についての詳細を学ぶことができます。
正確に「機能しなかった」とは何ですか?どのようなエラーがありましたか? – Alex
ここにはどのようなウィンドウ形式がありますか? – elyashiv
[Where節を挿入する方法]の可能な複製(http://stackoverflow.com/questions/545593/how-to-insert-with-where-clause) –