var idParam = new SQLiteParameter("@idParam", SqlDbType.Text) { Value = insertData.ID };
var userIdParam = new SQLiteParameter("@userIdParam", SqlDbType.VarChar) { Value = insertData.Uid };
var applicationNameParam = new SQLiteParameter("@applicationNameParam", SqlDbType.VarChar) { Value = insertData.Application };
var eventNameParam = new SQLiteParameter("@eventNameParam", SqlDbType.VarChar) { Value = insertData.EventName };
var clientTokenParam = new SQLiteParameter("@clientTokenParam", SqlDbType.VarChar) { Value = insertData.ClientToken };
var versionParam = new SQLiteParameter("@versionParam", SqlDbType.VarChar) { Value = insertData.Version };
var dateTimeParam = new SQLiteParameter("@dateTimeParam", SqlDbType.DateTime) { Value = insertData.DateTime };
var dataParam = new SQLiteParameter("@dataParam", SqlDbType.Text) { Value = insertData.Data };
SQLiteCommand command = new SQLiteCommand("INSERT INTO DATAOUT (id, uid, application, eventname, clienttoken, version, datetime, data)" +
" VALUES ('@idParam','@userIdParam','@applicationNameParam','@eventNameParam','@clientTokenParam','@versionParam',@dateTimeParam,'@dataParam')",Connection);
command.Parameters.Add(idParam);
command.Parameters.Add(userIdParam);
command.Parameters.Add(applicationNameParam);
command.Parameters.Add(eventNameParam);
command.Parameters.Add(clientTokenParam);
command.Parameters.Add(versionParam);
command.Parameters.Add(dateTimeParam);
command.Parameters.Add(dataParam);
command.ExecuteNonQuery();
Я пытаюсь отладить эту ВСТАВКУ, но мне не очень повезло.Почему sqllite пытается привести мое datetime к int ??Схема базы данных ожидает объект datetime.Есть ли способ увидеть текст команды вставки при отправке в БД?
Вот взгляд на типы, которые я пытаюсь вставить:
public string Uid { get; private set; }
public string Application { get; private set; }
public string EventName { get; private set; }
public string ClientToken { get; private set; }
public string Version { get; private set; }
public DateTime DateTime { get; private set; }
public string Data { get; private set; }
Вотпример вставки:
INSERT INTO DATAOUT (id, uid, приложение, имя события, clienttoken, версия, дата и время, данные) VALUES ('00000000-0000-0000-0000-000000000000', '123abcd ',' My Application ',' ',' Test Client ',' 1.0.0 ',' 1/1/2000 ',' [{"id": "alpha_123", "question": "ronunculations in pre-классические времена или на неаттских диалектах. Для det "," answer ":" nuncitions "}, {" id ":" beta_456 "," question ":" официальные документы, такие как законы an "," answer ":" илиmodif "}, {" id ":" gamma_789 "," question ":" поддерживается или слегка изменен для соответствия греческой фонологии; таким образом,? "," answer ":" iation of Attic "}, {" id ":" delta_098"," question ":" построенное произношение чердака в конце 5-го an "," answer ":" unciation of "}, {" id ":" epsilon_076 "," question ":" разные стилистические варианты, с нисходящим хвостомлибо идти прямо вниз о "," ответ ":" Весь буnch "}, {" id ":" zeta_054 "," question ":" учащенное дыхание, когда начинается слово.Другое диакритическое использование "," answer ":" other dia "}] ')
Последнее значение является строкой JSON. Поле dateTime, по-видимому, является проблемой (7-й параметр). Для примера вышеЯ только что добавил текст «01.01.2011». Код создает вставку с помощью параметров. Параметр datetime имеет действительную дату в отладчике.
Когда я проверяю параметр, «dateTimeParam»Отладчик показывает dbType = Int32. Что с этим?
UPDATE
Удалены кавычки вокруг параметров в операторе вставки. В результате получаются строковые литералы, @paramnameбыть вставленным. Спасибо!