Если столбец username
является текстовый столбец, то каждый раз, когда вы хотите произвести поиск по этому столбцу, буквальное значение должно быть заключено в одинарные кавычки
string username = "Steve";
var query = $"SELECT id, username, password, salt FROM users WHERE username='{username}'";
Однако это неправильный способ сделать текст запроса для двух основных задач:
Sql Injection: а tecnique использоваться хакерами, чтобы вставить в ваш код вредоносного текста, который может уничтожить ваши данные базы данных См: Sql Injection
Проблемы с анализом: Строки, содержащие одиночные кавычки, должны быть надлежащим образом отформатированы, десятичные значения должны быть преобразованы в строки с соответствующим десятичным разделителем, действующим для локали базы данных, даты .... ну ...
Таким образом, параметрический подход освободит вас от всех этих проблем
var query = @"SELECT id, username, password, salt
FROM users WHERE [email protected]";
using(MySqlConnection cnn = new MySqlConnection(.......))
using(MySqlCommand cmd = new MySqlCommand(query, cnn))
{
cnn.Open();
cmd.Parameters.Add("@username", MySqlDbType.VarChar).Value = username;
using(MySqlDataReader reader = cmd.ExecuteReader())
{
..... use your data
}
}
Текстовое поле, подобное имени пользователя, требует значений между кавычками. Однако попытайтесь прочитать, как использовать параметризованные запросы – Steve
, он работал и для других запросов, поэтому я не видел необходимости делать это по-другому? Если даже так, я бы не знал, как, но – toxic
Не могли бы вы добавить код с одинарными кавычками, которые вы использовали? – Steve