2016-10-05 15 views
0

次のコード行にwhere句を追加しようとしています。OleDbCommandにWhere句を追加する

これは、ドロップダウンコンボボックスからデータテーブルを取得するためです。今私はそのユーザーが自分のレコードを見ることができるように、そのテーブルをユーザー名でフィルタリングしたい。

私はこのコードにwhere句を書く方法について助けが必要です。

これ以上の情報が必要な場合は、追加してください。

ありがとうございます。

OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From ", comboBox1.Text), con); 

コメント

後、私は、SQLインジェクションの保護を追加しました。

OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From 
@Companydetails where Research_ID = @Researcher_ID"), con); 

     cmd.Parameters.AddWithValue("@Companydetails", comboBox1.Text); 
     cmd.Parameters.AddWithValue("@Researcher_ID", usernumber_lab.Text); 

が、今、それは言って私にエラーを与えている:

追加情報:クエリの構文エラーが。不完全なクエリ句。

このクエリを削除するために追加する必要がありますか?

+1

を試してみてください? – Izzy

+0

あなたのコードは[SQL Injection](https://en.wikipedia.org/wiki/SQL_injection)の脆弱性があります。 – Hendry

答えて

1

から安全になるだろう。この道だから何があなたを停止しています。この

string sql = String.format("Select * From {0} where id = {1}", comboBox1.Text, id); 
OleDbCommand cmd = new OleDbCommand(sql,con); 
0

あなたは自分のSQL文を長くすることができます。

OleDbCommand cmd = new OleDbCommand(String.Concat("Select * From table Where something = something", comboBox1.Text), con); 

あなたは複数行か何かで作業する必要はありません。これは、一部のデータベースマネージャでのみ必要ですが、C#SQL文では必要ありません。

0

あなたは

OleDbCommand cmd = new OleDbCommand(String.Format("Select * From {0} WHERE username='{1}'", comboBox1.Text,username.Text), con); 
0

をご希望の場合は、以下のコード

OleDbCommand cmd = new OleDbCommand(string.Format(
            "SELECT * FROM {0} WHERE Username = '{1}'", 
            comboBox1.Text, userName), con); 
2

を試すことができ、次のように私はそれを行うだろう。

string query = "Select * from MyTable Where username = @username"; 

using (OleDbCommand cmd = new OleDbCommand(query, con)) 
{ 
    cmd.Parameters.Add("@username", OleDbType.VarChar).Value = comboBox1.Text; 
} 

オブジェクトは自動的に破棄されますし、また、あなたがSQLインジェクション

+0

OPはテーブル名がドロップダウンリストからも来たと述べました。 – Hendry

関連する問題