2013-06-05 3 views
2

데이터 어댑터를 사용하여 테이블의 총 행 수를 얻으려고하지만 행 수가 항상 1을 반환합니다. 독자를 사용할 때 정확한 숫자를 얻습니다. dataAdapter를 사용하고 싶습니다.DataTable 항상 1을 반환하는 행 수

public double GetRowNumber() 
    { 
     using (OleDbConnection con = new OleDbConnection(someConnectionString)) 
     { 
      con.Open(); 
     String cmdString = "SELECT COUNT (*) FROM " + "[" + Table +"]" 

      OleDbDataAdapter db = new OleDbDataAdapter(cmdString, dbConn); 
      DataTable dt = new DataTable(); 
      db.Fill(dt); 
      return dt.Rows.Count; 

     } 
    } 

어떤 아이디어 : 여기

내 코드? 문 1 개 기록, 카운트 수와 데이터 테이블을 채울 것 1
SELECT COUNT (*) FROM " 

때문에

답변

6

당신의 함수는 항상 반환합니다. 당신이 행 수는 당신이 원하는에 대한

con.Open(); 
    String cmdString = "SELECT COUNT (*) FROM " + "[" + Table +"]" 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.Text = cmdString ; 
    cmd.Connection = con; 
    int count = Convert.ToInt32(cmd.ExecuteScalar()); 

더 빠르고 가벼운 사용하려는 경우

. 데이터 테이블과 같은 객체를 사용할 필요가 없습니다.

+0

좋은 대답하지만, 간단한 예제와 함께 당신은 샘플을 의미 – Steve

+1

더 좋을 것입니다. 너 내가 맞아. 나는 샘플을 올릴 것이다. –

+0

지금은 괜찮습니까? :) –

0

표에는 행이 하나만 있습니다. 그것은 쿼리의 테이블에 대한 데이터베이스의 행 양과 함께 단일 셀을 포함합니다. 즉, 쿼리의 결과는 한 행, 한 열 집합입니다.

dt.Rows.Count 대신 dt.Rows[0][0];을 반환 할 수 있지만 잔인합니다. 그러나 이와 같은 경우에는 ExecuteScalar()을 사용하는 것이 가장 좋습니다 (kostas에서 그렇게 옹호 한 사람과 그에게 upvotes).

1

쿼리가 하나의 행만 반환하기 때문에. SQL Server 관리자를 실행하고 쿼리를 실행하는 경우.

결과는 다음과 같습니다.

enter image description here

관련 문제