2016-10-05 4 views
0

Я пытаюсь добавить предложение where в следующую строку кода.Добавление предложения Where в OleDbCommand

Причина этого в том, что я получаю datatable из выпадающего списка. теперь я хочу отфильтровать эту таблицу по имени пользователя, чтобы только пользователь мог видеть их записи.

Мне нужна помощь в том, как написать предложение 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 Statement больше:

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 Injection

+0

OP упомянул, что имя таблицы также появилось в выпадающем списке. – Hendry