Добавление предложения 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);

но теперь он дает мне сообщение об ошибке:

Дополнительная информация: Синтаксическая ошибка в запросе. Неполное предложение запроса.

есть ли что-то еще, что мне нужно добавить, чтобы завершить этот запрос?


person SouthAfricanGuy    schedule 05.10.2016    source источник
comment
Так что вас останавливает?   -  person Izzy    schedule 05.10.2016
comment
Ваш код уязвим для SQL Injection. Если у вас есть время, я предлагаю вам немного прочитать об этом. .   -  person hendryanw    schedule 05.10.2016


Ответы (5)


Пожалуйста, попробуйте это

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

Я бы сделал это следующим образом;

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.

person Izzy    schedule 05.10.2016
comment
ОП упомянул, что имя таблицы также произошло из выпадающего списка. - person hendryanw; 05.10.2016

Вы можете просто сделать свой оператор sql длиннее:

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

Вам не нужно работать с многострочным или чем-то еще. Это необходимо только в некоторых менеджерах баз данных, но не в инструкции С# sql.

person DarkAngel    schedule 05.10.2016

Если вы хотели бы

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

Вы можете попробовать приведенный ниже код

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