Как я могу увидеть 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 ответа:
Но я могу почти гарантировать, что это не будет работать в моем мире 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 . Вы сможете увидеть, что выполняется в базе данных.