@postya

Как поместить в sqlite запрос переменную?

Пишу приложение на C# + WPF
Имеется combоboox, в который помещаются данные из таблиц БД SQLIte.
Я создал метод, который читает БД и помещает данные в combobox, в параметрах метода буду указывать название таблицы.
Название таблицы будет переменной типа string.

Как передать название таблицы в sqlite запросе?

Запрос выглядит так:

"SELECT ID FROM category1";

category1 должно быть название переменной

Вот,что я попытался сделать, но это не работает:

private SQLiteConnection sqlCon;
        private SQLiteCommand sqlCommand;
        private SQLiteDataAdapter sqlDataAdapter;
        private DataSet ds = new DataSet();
        private DataTable dt = new DataTable();


        public void SetConnection()
        {
            sqlCon = new SQLiteConnection("Data Source=database.db;Version=3;New=False;Compress=True");
        }

public void ReadMyData(ComboBox comboBox, string category)
        {
            SetConnection();
            sqlCon.Open();
            
            sqlCommand.CommandText = "SELECT ID FROM @category";
            sqlCommand.CommandType = CommandType.Text;
            sqlCommand.Parameters["@name"].Value = category;
            
            sqlCommand = new SQLiteCommand(sqlCommand.CommandText, sqlCon);

            List<string> str = new List<string>();
            try
            {
                SQLiteDataReader sqReader = sqlCommand.ExecuteReader();
    
                // Always call Read before accessing data.
                while (sqReader.Read()) 
                {
                    str.Add(sqReader["ID"].ToString());
                    string questions = sqReader["ID"].ToString();
                    comboBox.Items.Add(questions);
                } 
                // always call Close when done reading.
                sqReader.Close();
            }
            finally
            {
                sqlCon.Close();
            }
        }


Вызов метода в другом классе:

private Database db = new Database();

db.ReadMyData(comboQuestions, "category1");
  • Вопрос задан
  • 982 просмотра
Решения вопроса 1
HemulGM
@HemulGM
Delphi Developer, сис. админ
:
sqlCommand.CommandText = "SELECT ID FROM :category";
sqlCommand.CommandType = CommandType.Text;
sqlCommand.Parameters["name"].Value = category;


Так стоп, что? Название таблицы?
А че, просто конкатенация тебя не устраивает?
sqlCommand.CommandText = "SELECT ID FROM " + category;


Ужас... Вы хоть поняли, что написали?
Вот примерно так, думаю должно быть.

sqlCommand.CommandText = "SELECT ID FROM category where name = :name";
sqlCommand.CommandType = CommandType.Text;
sqlCommand.Parameters["name"].Value = category;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы