Как я могу увидеть SQL, отправленный в базу данных после того, как параметры заменили их заполнители?

Первый MessageBox.Show() ниже просто показывает мне то же самое, что и константная строка SQL_GET_VENDOR_ITEMS, что мне кажется правильным, но я получаю: "Произошла ошибка при разборе запроса. [Номер строки токена, смещение строки токена, Токен по ошибке,,]"

Есть ли способ шпионить за содержанием SQL после добавления параметров; тогда это должно быть что-то вроде: "SELECT ItemID, PackSize FROM VendorItems WHERE VendorID = 'TEST' AND VendorItemID = '852963'

Вот соответствующий код:

    const string SQL_GET_VENDOR_ITEMS = "SELECT ItemID, PackSize " + 
        "FROM VendorItems " +
         "WHERE VendorID = @VendorID AND VendorItemID = @VendorItemID";

    string retVal = string.Empty;
    checkConnection();
    SqlCeCommand vendorCMD = objCon.CreateCommand();
    try 
    {
        vendorCMD.CommandText = SQL_GET_VENDOR_ITEMS;
        vendorCMD.Parameters.Add("@VendorID", SqlDbType.NVarChar, 10).Value = VendorID; 
        vendorCMD.Parameters.Add("@VendorItemID", SqlDbType.NVarChar, 19).Value = VendorItemID;

        MessageBox.Show(string.Format("Made it up to vendorCMD.ExecuteReader() with sql {0}", vendorCMD.CommandText));

. . .

        vendorReader.Close();
    } 
    catch (SqlCeException sqlceex)
    {
        MessageBox.Show(string.Format("SqlCeException in GetValsForVendorAndItem == {0}", sqlceex.Message));//TODO: Remove
    }
    finally 
    {
        vendorCMD.Dispose();
    }
    return retVal;

,,,

2 ответа

Решение

но я почти гарантирую, что это не сработает в моем мире VS2003/.NET 1.0

аааа... версия - см. MSDN:

Поставщик данных.NET Compact Framework для SQL Server CE не поддерживает именованные параметры для передачи параметров в оператор SQL, вызываемый SqlCeCommand, если для CommandType задано значение Text. Вы должны использовать вопросительный знак (?). Например: SELECT * FROM Customers WHERE CustomerID = ?

Поскольку вы находитесь на CE, ваши возможности ограничены, но есть несколько советов, как заглянуть в базу данных: Profiler для Sql CE

Если вы работали на обычном SQL Server, вы можете рассмотреть возможность использования SQL Profiler. Вы сможете увидеть, что выполняется в базе данных.

Другие вопросы по тегам