2015-11-11 71 views
0

com.ExecuteNonQuery()总是返回-1。为什么com.ExecuteNonQuery()返回-1 Always。在所有情况下,

为什么它总是= -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); 
+4

为什么你叫'ExecuteNonQuery'两次?为什么当它*是一个查询时调用'ExecuteNonQuery'?为什么当它只是一个select查询的时候,你把它称为'insertquery'?这里没有插入... –

+0

即使我调用一次:在所有情况下也返回-1 –

+0

为什么当它真的包含一个'SELECT'时,它被称为'insertquery'? –

回答

2

您正在使用select查询,所以结果将始终为-1。

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

+0

谢谢。我不知道 –

4

这是因为您正在使用它与SELECT SQL命令。

SqlCommand.ExecuteNonQuery(重点煤矿)的文档:

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

目前还不清楚你想达到什么,但这基本上不是这样做的。

+0

谢谢我不知道 –

+4

@محمودالعطاس:一般来说,当某些事情没有像你期望的那样行事时,你应该做的*第一件事是咨询文档。 –

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); 

尝试这个

相关问题