2014-12-06 2 views
1

45 개의 열 중에서 43 개의 총 수를 얻으려고합니다. 테이블에서 정수로 정의됩니다.선택한 열의 총 수

System.Data.SqlClient.SqlException (0x80131904) :

Dim connStr, cmdStr As String 
    connStr = ConfigurationManager.ConnectionStrings("astsql").ConnectionString 
    cmdStr = "SELECT (SUM([index]),SUM([01]),SUM([02]),SUM([03]),SUM([04]),SUM([05]),SUM([06]),SUM([07]),SUM([08]),SUM([09]),SUM([10]),SUM([11]),SUM([12]),SUM([13]),SUM([14]),SUM([15]),SUM([16]),SUM([17]),SUM([18]),SUM([19]),SUM([20]),SUM([aa]),SUM([ab]),SUM([ac]),SUM([ad]),SUM([ae]),SUM([af]),SUM([ag]),SUM([ah]),SUM([ai]),SUM([aj]),SUM([ak]),SUM([al]),SUM([am]),SUM([an]),SUM([ao]),SUM([ap]),SUM([aq]),SUM([ar]),SUM([as]),SUM([at]),SUM([grsc]),SUM([grkr]),SUM([grkn])) FROM [count];" 
    Dim totalcount As Integer = 0 
    Dim n As Integer = 0 
    Try 
     Using conn As New SqlConnection(connStr) 
      Using cmd As New SqlCommand(cmdStr, conn) 
       conn.Open() 
       cmd.ExecuteNonQuery() 
       Using myreader = cmd.ExecuteReader() 
        While myreader.Read() 
         totalcount = totalcount + Convert.ToInt32(myreader(n)) 
         n = n + 1 
        End While 
       End Using 
       conn.Close() 
       cmd.Dispose() 
       conn.Dispose() 
      End Using 
     End Using 
    Catch ex As Exception 
     Label5.Text = ex.ToString() 
    End Try 

여기 내 오류 코드입니다 ','근처의 구문이 잘못. System.Data.SqlClient.SqlConnection.OnError (SQLEXCEPTION 예외 부울 breakConnection, 액션 1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action
wrapCloseInAction 1)에서
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj 부울 callerHasConnectionLock 부울 asyncClose)에서
시스템에서
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds에서 .Data.SqlClient.TdsParser.TryRun (runBehavior runBehavior, SqlCommand를 cmdHandler, SqlDataReader의 데이터 스트림, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj 부울 & dataReady)
(문자열 methodName로 부울 비동기, INT32 시간 초과 부울 asyncWrite)
at System.Data.SqlClient.SqlComm and.InternalExecuteNonQuery (TaskCompletionSource`1 completion

답변

1

SUM을 추가하지 않는 한 괄호로 묶지 마십시오. 흑자로 쉼표를 교체하면 문제가 해결됩니다 :

cmdStr = "SELECT (SUM([index])+SUM([01])+SUM([02])+SUM([03])+SUM([04])...) FROM [count];" 

이제 쿼리가 하나의 숫자를 반환합니다, 그래서 당신은 ExecuteScalar 대신 ExecuteReader 사용할 수 있습니다

conn.Open() 
totalcount = Convert.ToInt32(cmd.ExecuteScalar()) 
conn.Close() 
관련 문제