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


Первый ящик для сообщений.Show () ниже просто показывает мне то же самое, что и const string 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 3

2 ответа:

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

ААА... версия-смотрите MSDN :

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

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

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