В вашем SQL-запросе есть несколько проблем:
1. Основная ошибка в запросе - вы используете PROMO без кавычек, из-за чего SQLite воспринимает это как имя столбца, а не как строковое значение. Запрос должен выглядеть так:
string sqlQuery = $"SELECT * FROM Promo WHERE promo = '{promoValue}'";
Или лучше использовать параметризованный запрос для безопасности:
string sqlQuery = "SELECT * FROM Promo WHERE promo = @PromoCode";
using (SQLiteCommand command = new SQLiteCommand(sqlQuery, connection))
{
command.Parameters.AddWithValue("@PromoCode", promoValue);
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(command))
{
adapter.Fill(dTable);
}
}
2. Убедитесь, что:
- Соединение с базой данных открыто
- Имя таблицы и столбца написаны правильно с учетом регистра
- DataTable инициализирована перед использованием
Полный рабочий пример:
using (SQLiteConnection connection = new SQLiteConnection("Your_Connection_String"))
{
connection.Open();
DataTable dTable = new DataTable();
string sqlQuery = "SELECT * FROM Promo WHERE promo = @PromoCode";
using (SQLiteCommand command = new SQLiteCommand(sqlQuery, connection))
{
command.Parameters.AddWithValue("@PromoCode", promoValue);
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(command))
{
adapter.Fill(dTable);
}
}
// Проверка результатов
if (dTable.Rows.Count > 0)
{
// Данные найдены
}
else
{
// Данные не найдены
}
}
Также рекомендуется проверить:
1. Правильность подключения к базе данных
2. Наличие прав доступа к таблице
3. Корректность значения promoValue
4. Попробуйте выполнить простой SELECT * FROM Promo для проверки доступа к таблице