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