Есть ли способ увидеть фактический текст команды параметризованного SqliteCommand? - PullRequest
1 голос
/ 02 февраля 2012

В моем коде я использую параметризованные запросы, например:

INSERT INTO table_name VALUES(?,?,?,?);

Затем я добавляю параметры программно (например, целочисленные значения 1,2,3,4), выполняю команду, и все прекрасно, однако я хотел бы добавить вывод журнала, в котором будет записан фактический выполненный SQL:

INSERT INTO table_name VALUES(1,2,3,4);

И в настоящее время я не вижу способа сделать это.

Я использую .NET 3.5, C # 3 и современные библиотеки от http://system.data.sqlite.org

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 02 февраля 2012

Кто-то исправит меня, если я ошибаюсь (у меня нет исходного кода здесь), но в iirc нет «фактического текста команды». Я почти уверен, что парсер БД превращает ваши входные данные (оператор + параметры) непосредственно в дерево разбора, без промежуточного понятного человеку оператора SQL.

1 голос
/ 02 февраля 2012

Просто выведите массив Parameters вместе с CommandText в журнал.

0 голосов
/ 02 февраля 2012

Вот, пожалуйста,

Вместо отладки просто скопируйте его в свой журнал:

        cmd.Parameters.AddWithValue("@Test", 42);
        Debug.Print(cmd.CommandText);
        foreach (SqlParameter param in cmd.Parameters)
        {
            Debug.Print(param.ParameterName + ": " + param.Value.ToString());
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...