0

com.ExecuteNonQuery() всегда возвращает -1 - во всех случаях.почему com.ExecuteNonQuery() return -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); 
+4

Почему вы называете 'ExecuteNonQuery' дважды? И почему вы вызываете 'ExecuteNonQuery', когда он * является * запросом? И почему вы назвали его 'insertquery', когда это всего лишь запрос выбора? Там нет вставки ... –

+0

даже я звоню один раз: также возвращает -1 во всех случаях –

+0

Почему он называется 'insertquery', когда он действительно содержит' SELECT'? –

ответ

2

Вы используете запрос выбора, чтобы результат всегда был -1.

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является число строк, затронутых командой. Когда триггер существует в вставленной или обновляемой таблице , возвращаемое значение включает в себя номер строк, затронутых операциями вставки или обновления, и числом строк, затронутых триггером или триггерами. Для всех остальных типов операторов возвращаемое значение равно -1.

+0

спасибо. я этого не знал –

4

Это потому, что вы используете его с помощью команды SELECT SQL.

Из документации SqlCommand.ExecuteNonQuery (курсив):

Для UPDATE, INSERT и DELETE заявления, возвращаемое значение является числом строк, затронутых командой. Когда триггер существует в вставленной или обновляемой таблице, возвращаемое значение включает в себя количество строк, затронутых как операцией вставки, так и обновлением, а также количеством строк, затронутых триггером или триггерами. Для всех других типов операторов возвращаемое значение равно -1. Если происходит откат, возвращаемое значение равно -1.

Непонятно, чего вы пытаетесь достичь, но в основном это не способ сделать это.

+0

Спасибо, что я не знал, что –

+4

@ محمودالعطاس: В общем, когда что-то не ведет себя так, как вы ожидаете, вещь * first *, которую вы должны сделать, это ознакомиться с документацией. –

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

попробовать этот

 Смежные вопросы

  • Нет связанных вопросов^_^