我怎么能看到发送到数据库的SQL参数已经取代了他们的占位符后

本文关键字:取代 他们的 占位符 参数 SQL 怎么能 数据库 | 更新日期: 2023-09-27 18:07:22

下面的第一个MessageBox.Show()简单地向我显示了与const字符串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;

我怎么能看到发送到数据库的SQL参数已经取代了他们的占位符后

但是我几乎可以保证这在我的VS2003/中不起作用。. NET 1.0 world

啊……版本-见MSDN:

当CommandType被设置为Text时,SQL Server CE的. net Compact Framework数据提供程序不支持将参数传递给由SqlCeCommand调用的SQL语句的命名参数。必须使用问号占位符。例如:SELECT * FROM Customers WHERE CustomerID = ?

既然你是在CE上,你的选择是有限的,但是有一些关于如何窥视数据库的建议:

如果你使用的是普通的SQL Server,你可以考虑使用SQL Profiler。您将能够看到对数据库执行了什么。