C# 我想用C中SQL Server表中的where类选择不同的maxno#
如果表中没有结果,它应该返回零,但当前返回的是-1。我建立我的逻辑,如果有零做这件事,如果不是零意味着记录存在做这件事。我不熟悉C#和SQL Server。如果我的代码有任何错误,请告诉我C# 我想用C中SQL Server表中的where类选择不同的maxno#,c#,sql-server,C#,Sql Server,如果表中没有结果,它应该返回零,但当前返回的是-1。我建立我的逻辑,如果有零做这件事,如果不是零意味着记录存在做这件事。我不熟悉C#和SQL Server。如果我的代码有任何错误,请告诉我 int UserExist = 0; using (SqlCommand cmd1 = new SqlCommand(@"select DISTINCT max(billno) AS bill from sale where ([date]='" + bildt.Text + "') ", con)) {
int UserExist = 0;
using (SqlCommand cmd1 = new SqlCommand(@"select DISTINCT max(billno) AS bill from sale where ([date]='" + bildt.Text + "') ", con)) {
UserExist = (int)cmd1.ExecuteNonQuery();
if (UserExist > 0) {
do this
} else {
do some thing
}
}
您需要使用
ExecuteScalar
而不是ExecuteNonQuery
ExecuteScalar
执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略
ExecuteNonQuery
针对连接执行Transact-SQL语句,并返回受影响的行数。对于UPDATE、INSERT和DELETE语句,返回值是受命令影响的行数
int UserExist = 0;
using (SqlCommand cmd1 = new SqlCommand(@"select DISTINCT max(billno) AS bill from sale where ([date]='" + bildt.Text + "') ", con))
{
UserExist = (int)cmd1.ExecuteScalar();
if (UserExist > 0)
{
do this
}
else
{
do some thing
}
}
还有一些附加的观点
我希望这对我有所帮助。在互联网上搜索后,我找到了解决方案
int UserExist = 0;
using (SqlCommand cmd1 = new SqlCommand(@"select COUNT(*) from sale where ([date]=@date) ", con))
{ cmd1.Parameters.AddWithValue("date", bildt.Text);
UserExist = (int)cmd1.ExecuteScalar();
if (UserExist > 0)
{using (SqlCommand cmd = new SqlCommand(@"select DISTINCT max(billno) AS bill from sale where ([date]='" + bildt.Text + "') ", con))
{ using (SqlDataReader dr = cmd.ExecuteReader())
{while (dr.Read())
{
String x = dr["bill"].ToString();
txttemp.Text = x;
int a;
int.TryParse(txttemp.Text, out a);
billno.Text = (a + 1).ToString();
txttemp.Text = "";
}
dr.Close(); dr.Dispose();
}
}
}
else {do some thing }
要从C#中的tsql查询中获得单值结果,需要调用ExecuteScalar
您可以阅读更多内容您还应该为第二个
cmd
使用参数-特别是如果您需要将文本框文本值强制转换为日期。