Параметр для столбца, в имени которого есть тиреC#

Место общения программистов C#
Ответить
Anonymous
 Параметр для столбца, в имени которого есть тире

Сообщение Anonymous »

Я использую Dapper с SQLite.
У меня есть таблица, определённая следующим образом:

Код: Выделить всё

CREATE TABLE Example (
id            INTEGER NOT NULL,
"some-field"  TEXT
);
Я написал консольное приложение на C#, которое вставляет значения в таблицу выше:

Код: Выделить всё

public void Insert(int id, string somefield)
{
using(var db = new SQLiteConnection("..."))
{
string sql = "INSERT INTO Example (Id, [some-field]) VALUES (@id, @somefield)";
db.Execute(sql, new { id, somefield });
}
}
Обратите внимание, что мне пришлось переименовать параметр в операторе sql.
Моя программа на самом деле динамически создает оператор вставки sql, но ради этого вопроса давайте предположим, что я хотите передать параметр, соответствующий имени столбца:

Код: Выделить всё

   INSERT INTO Example (id, [some-field]) VALUES (
@id,           -- this is fine
[@some-field]  -- SQL logic error: no such column @some-field
@[some-field]  -- SQL logic error: unrecognized token: "@"
@"some-field"  -- same error as above
"@some-field"  -- works, but inserts the literal value, not the passed in parameter
);
Я даже пытался передать словарь в качестве параметра:

Код: Выделить всё

public void Insert(int id, string somefield)
{
var parameters = new Dictionary()
{
("id", id),
("some-field", somefield),
("@some-field", somefield),
("@\"some-field\"", somefield),
};
...
db.Execute(sql, parameters);
...
Можно ли написать оператор вставки, в именах столбцов которого есть тире, а затем присвоить значения параметрам, имеющим те же имена, что и имена столбцов?
как я уже сказал, имена столбцов вычисляются динамически, и их нужно использовать «как есть».

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-its-name
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»