C#SQL查询没有返回任何内容

时间:2012-10-12 21:16:57

标签: c# sql

我在这里有公共DataTable并且代码看起来正确,但它没有返回任何内容,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;

    }

1 个答案:

答案 0 :(得分: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 Injection,还会自动确保正确处理OrderId。

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

示例:

Where Id = 1

不同
Where Id= '1'

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