【发布时间】:2012-09-05 15:34:26
【问题描述】:
我有以下代码:
SqlCommand cmd2 = new SqlCommand(
"SELECT ClaimId FROM tblPayment WHERE PaymentId = " + PaymentID.ToString(),
mvarDBConn);
SqlDataReader reader = cmd2.ExecuteReader();
reader.Read();
Int32 ClaimId = reader.GetInt32(0);
reader.Close();
如果我在 SQL 中运行 SELECT 语句,它返回的数字很好,但是当我使用 ExecuteReader 时,它返回的都是 0。我尝试了多种方法,包括 ExecuteScalar、ExecuteNonQuery、reader.GetString 然后将其转换为 int 等.
我错过了什么?谢谢。
编辑:这是我在 SQL Server 配置文件中得到的:
这是我得到的回报:
exec sp_executesql N'SELECT ClaimId FROM tblPayment WHERE PaymentId = @paymentID',N'@paymentID nvarchar(5)',@paymentID=N'8392'
不知道为什么当我之前的 SqlCommand 直接进入 SQL 时,它为什么将它放入 SP_ExecuteSQL,与“N”相同。
【问题讨论】:
-
ClaimId的数据类型是什么? -
连接“mvarDBConn”是否打开?
-
警告您的代码可能容易受到 sql 注入攻击!
-
你确定
PaymentID真的包含正确的值吗? -
当你在mysql中运行查询时,返回结果?
标签: c# .net sql-server ado.net