В моем классе SqlClient
я внедрил метод Insert
таким образом. Я должен передать Dictionary
с парами (имя столбца, значение) до Insert
, а затем метод строит параметризованный запрос и выполняет команду.Клиент C# Sql - не может Вставить параметризованный столбец, имя которого начинается с номера
public void Insert(string table, Dictionary<string, object> values)
{
// build INSERT query
string query = "INSERT INTO " + table + " (";
foreach (KeyValuePair<string, object> pair in values)
query += pair.Key + ",";
query = query.Substring(0, query.Length - 1) + ")";
query += "VALUES (";
foreach (KeyValuePair<string, object> pair in values)
query += "@" + pair.Key + ",";
query = query.Substring(0, query.Length - 1) + ")";
// create command from query
using (SqlCommand command = new SqlCommand(query, connect))
{
foreach (KeyValuePair<string, object> pair in values)
command.Parameters.Add(pair.Key, pair.Value);
// execute command
command.ExecuteNonQuery();
}
}
Но, я обнаружил, что не работает, а в значениях список некоторых столбец, название которого начинается с числа, например 1column
. (Я знаю, что это ужасное имя переменной, сообщите об этом владельцу базы данных). Можете ли вы предложить мне каким-то образом, как заставить его работать? Кроме того, вы определенно найдете мой способ построения запросов не идеальным, поэтому я буду благодарен за любые комментарии.
EDIT:
- Ближайшие имя столбца с двойными кавычками (
"1column"
) не помогает.
К сожалению, это не помогает, см. Мое редактирование. – Majak
Я тебе не верю. Пожалуйста, покажите команду SQL после внесения изменений. –
Ричард, мне очень жаль. Я сделал небольшую ошибку. Теперь это работает. Большое спасибо! – Majak