下面的第一个 MessageBox.Show() 只是向我展示了与 const string SQL_GET_VENDOR_ITEMS 完全相同的东西,这对我来说似乎很好,但我得到的是,“解析查询时出错。[ token 行number, Token line offset,, Token in error,,]"
有没有办法在添加参数后监视 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;
. . .
最佳答案
but I can almost guarantee that won't work in my VS2003/.NET 1.0 world
啊...版本 - 请参阅 MSDN :
The .NET Compact Framework data provider for SQL Server CE does not support named parameters for passing parameters to an SQL statement called by a SqlCeCommand when CommandType is set to Text. You must use the question mark (?) placeholder. For example:
SELECT * FROM Customers WHERE CustomerID = ?
关于c# - 在参数替换了它们的占位符后,如何查看发送到数据库的 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798207/