为什么com.ExecuteNonQuery()返回-1始终。在所有情况下

时间:2015-11-11 20:24:39

标签: c# asp.net sql-server database-connection executenonquery

com.ExecuteNonQuery()总是返回-1 - 在所有情况下。

为什么总是= -1?

SqlConnection conn = newSqlConnection(ConfigurationManager.ConnectionStrings["UsersConnectionString"].ConnectionString);

conn.Open();

string insertquery = " select UserName from Users where Username='" + CurrentName + "' ";

SqlCommand com = new SqlCommand(insertquery, conn);
com.ExecuteNonQuery();

int ii = com.ExecuteNonQuery();

Response.Write(ii);

3 个答案:

答案 0 :(得分:4)

这是因为你正在使用SELECT SQL命令。

来自SqlCommand.ExecuteNonQuery的文件(强调我的):

  

对于UPDATE,INSERT和DELETE语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括插入或更新操作影响的行数以及受触发器或触发器影响的行数。 对于所有其他类型的语句,返回值为-1。如果发生回滚,则返回值也为-1。

目前尚不清楚你想要达到的目标,但这基本上不是这样做的。

答案 1 :(得分:2)

您正在使用选择查询,因此结果始终为-1。

  

对于UPDATE,INSERT和DELETE语句,返回值为   受命令影响的行数。当a上存在触发器时   正在插入或更新的表,返回值包括数字   受插入或更新操作影响的行数和数字   受触发器或触发器影响的行数。对于所有其他类型的   语句,返回值为-1。

答案 2 :(得分:0)

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["UsersConnectionString"].ConnectionString);
conn.Open();
string query = "select UserName from Users where lower(Username)=lower('" + CurrentName + "')";
SqlCommand com = new SqlCommand(query, conn);
string result = "";
result = com.ExecuteScalar() == null ? "" : com.ExecuteScalar().ToString();
conn.Close();
Response.Write(result);

试试这个