2012-03-30 2 views
0

이것은 회사의 기존 프로그램을 수정하는 것보다는 처음부터 데이터베이스에 액세스하는 프로그램을 작성한 첫 시도입니다. 다른 프로그램은 VB6 및 VB.NET 2003로 작성되었으므로 VB.Net 2010을 처음 사용합니다. SQL Server 2000을 사용하고 있지만 관련성이있는 경우 곧 2008로 업그레이드해야합니다.SQL 쿼리의 결과를 VB.NET의 여러 변수에 어떻게 할당합니까?

내가 성공적으로 데이터베이스에 연결 한 다음 여기에 같은 콤보 상자에, 예를 들어, 결과를 쿼리를 통해 데이터를 끌어와 할당 할 수 있습니다 : 나는 또한 끌어 쿼리를 실행 아무 문제가

Private Sub PopulateCustomers() 
    Dim conn As New SqlConnection() 
    Dim SQLQuery As New SqlCommand 
    Dim daCustomers As New SqlDataAdapter 
    Dim dsCustomers As New DataSet 

    conn = GetConnect() 
    Try 
     SQLQuery = conn.CreateCommand 
     SQLQuery.CommandText = "SELECT Customer_Name, Customer_ID FROM Customer_Information ORDER BY Customer_Name" 
     daCustomers.SelectCommand = SQLQuery 
     daCustomers.Fill(dsCustomers, "Customer_Information") 

     With cboCustomer 
      .DataSource = dsCustomers.Tables("Customer_Information") 
      .DisplayMember = "Customer_Name" 
      .ValueMember = "Customer_ID" 
      .SelectedIndex = -1 
     End With 

    Catch ex As Exception 
     MsgBox("Error: " & ex.Source & ": " & ex.Message, MsgBoxStyle.OkOnly, "Connection Error !!") 
    End Try 

    conn.Close() 

End Sub 

단일 필드를 만들고 ExecuteScalar를 사용하여 변수에 지정합니다. 내가 어떻게해야 하는지를 파악하지 못했다면 (그리고 다른 곳에서 찾기 위해 검색 용어의 올바른 조합에 맞지 않는 것처럼 보일 수 있습니다) 단일 행을 반환하고 여러 필드를 설정하는 쿼리를 실행하는 방법입니다. 해당 행을 개별 변수에 추가하십시오. 개별 변수에 반환 된 행의 각 필드를 할당 할 수 있도록

Public Function GetConnect() 
    conn = New SqlConnection("Data Source=<SERVERNAME>;Initial Catalog=<DBNAME>;User Id=" & Username & ";Password=" & Password & ";") 
    Return conn 
End Function 

이 어떻게 쿼리를 실행 않습니다 경우

는 위의 코드에서 참조 GetConnect 기능은 여기에 관련되어입니까?

답변

0

, 내가 DataReader를 경로하지만 다른 방법을 가고 싶어.

은 행이 거기 있는지 확인하는 것을 잊지 마십시오

dsCustomers.Tables("Customer_Information").Rows 

을 통해 반복하는 것입니다.

자세한 내용은 Google VB.Net 및 DataRow를 참조하십시오.

+0

DataReader 경로가 아마도 최고 (그리고 나가는 길을 끝냈습니다) 동안, 나는 여전히 특정 질문에 대답하기위한 최상의 대답으로 이것을 지정하고 있습니다. –

2

당신은 아마 SqlDataReader 개체를보고 싶을 :

@Roland 쇼처럼
Using con As SqlConnection = GetConnect() 
     con.Open() 

     Using cmd As New SqlCommand("Stored Procedure Name", con) 
      cmd.CommandType = CommandType.StoredProcedure 

      cmd.Parameters.Add("@param", SqlDbType.Int) 
      cmd.Parameters("@param").Value = id 

      ' Use result to build up collection 
      Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection Or CommandBehavior.SingleResult Or CommandBehavior.SingleRow) 
       If (dr.Read()) Then 
        ' dr then has indexed columns for each column returned for the row 
       End If 
      End Using 
     End Using 
    End Using 
+0

SqlDataReader에 대해 처음 접해 보았습니다. 왜 내가 처음 보았을 때 그다지 잘 모르겠다면, 잘못 작성된 자습서를 발견했을 것입니다. 지금 DataReader를 사용하고 있으며 완벽하게 작동합니다. (내가 다른 답변을 최선을 다해 선택했다하더라도, 가능하다면 나는 이걸 상향했다.) –

+1

대부분의 튜토리얼은 마법사와 약간의 설정으로 인해 데이터 인식 컨트롤을위한 데이터 세트로 바로 간다. , 당신은 전문가처럼 보이지만 쿠키 커터가됩니다. 축하합니다. :) –

관련 문제