1

我在这里有公共数据表,代码看起来正确,但它没有返回任何东西,OrderID 是正确的,查询本身是正确的,它没有返回任何东西......谁能告诉我为什么?

public DataTable get_OrderTransaction_Master_ByOrderID(Int64 orderID)
    {

        cn = new SqlConnection(objCommon.IpcConnectionString);
        cn.Open();

        string query = "select transactionID from dbo.OrderTransaction_Master where orderID = " + orderID;
        SqlCommand queryCommand = new SqlCommand(query, cn);
        SqlDataReader queryCommandReader = queryCommand.ExecuteReader();
        DataTable dataTable = new DataTable();
        dataTable.Load(queryCommandReader);
        cn.Close();
        return dataTable;

    }
4

1 回答 1

2

警告:这是基于不完整信息的猜测:

试试这个:更改查询字符串并添加行以添加参数。

    string query = "select transactionID from dbo.OrderTransaction_Master where orderID = @OrderId";
    SqlCommand queryCommand = new SqlCommand(query, cn); 
    queryCommand.Parameters.AddWithValue("@OrderId", orderID);
    SqlDataReader queryCommandReader = queryCommand.ExecuteReader(); 

说明:这不仅会阻止SQL 注入,还会自动确保 OrderId 得到正确处理。

您没有指定数据库中 OrderId 的数据类型。我猜它可能是非数字的。(guid 或 varchar - 我见过使用非数字 ID 的数据库,所以这不是不可想象的。)如果它是非数字的,你可能会错过值周围的引号。

例子:

Where Id = 1

不一样

Where Id= '1'

使用参数化查询将自动为您解决此问题。

于 2012-10-12T21:23:39.607 回答