使用下面的代码块提取前5条记录时,与在SQL Sever 2008中运行相同的脚本相比,我得到的结果截然不同。
DataTable results = new DataTable();
string cmdTxt = String.Format("select top 5 ID, NAME from TABLE where ID like @ID or NAME like @NAME order by ID asc");
using (SqlCommand cmd = new SqlCommand(cmdTxt, Butch.connection))
{
cmd.Parameters.Add("@ID", SqlDbType.Char, 15).Value = IdBox.Text + "%";
cmd.Parameters.Add("@NAME", SqlDbType.Char, 65).Value = IdBox.Text + "%";
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
adapter.Fill(results);
}
例如,将参数'0'传递到IdBox中,结果ID为'01'的结果为一行,但是在SQL Server中,ID为'000001','000002','000003','000004'的结果返回5行,'000005'。传递“ 00”将返回我的代码中的零行,但是从SQL Server中返回相同的5行。如果我通过'00000',我将从代码中获得与从SQL服务器获得的结果相同的结果。
无论如何,有没有让我的代码返回与SQL查询相同的结果?我试图在代码参数中使用更多的通配符,以防它只针对一个字符进行检查,但这是行不通的。我在使用NVarChar SqlDataType的其他地方也有相同的代码,但是我不知道为什么它在这里不起作用。
慕运维8079593
相关分类