[SQL] ExecuteNonQuery는이 반환 -1 쿼리 문자열에도 불구하고 SQL COUNT를 사용하는 경우
SQLExecuteNonQuery는이 반환 -1 쿼리 문자열에도 불구하고 SQL COUNT를 사용하는 경우
내가 따로 쿼리를 실행할 때 비록 C #을 반환에 어떤 이유로, ExecuteNonQuery는 ()가 -1 값은 필요한 실제 값을 반환합니다.
예를 들면 :
try
{
var connString ="Data Source=ServerName;InitialCatalog=DatabaseName;Integrated Security=true;"
SqlConnection conn = new SqlConnection(connString);
SqlCommand someCmd = new SqlCommand("SELECT COUNT(*) FROM SomeTable");
someCmd.Connection = conn;
conn.Open();
var theCount = cmd.ExecuteNonQuery();
conn.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
명령이 실행되면는 -1을 돌려줍니다. 개별적으로 쿼리를 실행하면 비록,
SELECT COUNT(*) FROM SomeTable;
조회되는 해당 테이블이 4 개 행이있는 경우 열 4의 수 하나 개의 행을 반환합니다.
해결법
-
==============================
1.MSDN을 바탕으로 :
MSDN을 바탕으로 :
당신은 INT 변수에 명령에 의해 영향을받는 행의 수와 그 저장을 반환하고 싶지만 구문의 유형이기 때문에 그것을 반환 있도록 -1 선택합니다.
해결 방법 : 당신이 ExecuteScalar는 사용할 수있는 int 변수에 SELECT 명령에 의해 영향을받는 행의 수와 그 저장을 얻고 싶다면.
var theCount = (int)cmd.ExecuteScalar();
-
==============================
2.이 예제와 Ado.net와 Ef는 코어를 사용할 수 있습니다
이 예제와 Ado.net와 Ef는 코어를 사용할 수 있습니다
var context = new SampleDbContext(); using (var connection = context.Database.GetDbConnection()) { connection.Open(); using (var command = connection.CreateCommand()) { command.CommandText = "SELECT COUNT(*) FROM SomeTable"; var result = command.ExecuteScalar().ToString(); } }
from https://stackoverflow.com/questions/38060489/executenonquery-returning-1-when-using-sql-count-despite-the-query-string by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL에서 처음 2 특수 문자 사이의 문자를 가져옵니다 (0) | 2020.05.16 |
---|---|
[SQL] 오라클에서 피벗 테이블을 사용하여 조언 (0) | 2020.05.16 |
[SQL] 하나의 테이블 컬럼에 다중 비트 값을 저장 (0) | 2020.05.16 |
[SQL] SQLite는 아이폰에서 열처럼 ROWNUM을 얻는 방법 (0) | 2020.05.16 |
[SQL] SELECT IN 오라클 매개 변수를 사용하여 문제 (0) | 2020.05.16 |