2015-11-11 115 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); 

嘗試這個

相關問題