2012-03-30 6 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を使用して変数に割り当てます。私がどうやってやっているのか把握できなかったことは、検索用語を適切に組み合わせて検索することができなかったことです.1つの行を返してからさまざまなフィールドを設定するクエリですその行を個々の変数に変換します。

場合、それは、関連ですが、ここでは上記のコードで参照GetConnect機能である:

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

個々の変数に返された行の各フィールドを割り当てるようにどのように私は、クエリを実行しますか?

答えて

0

@Rolandショウのように、私は、DataReaderのルートが、他の道を下ると思います。

dsCustomers.Tables("Customer_Information").Rows 

をループになります任意の行がそこにあるかどうかを確認することを忘れないでください。

Google VB.NetとDataRow詳細については、

+0

DataReaderのルートがおそらく最も良い(と私が行った方法)が、私はまだ特定の質問に答えるための最良の答えとしてこの1つを指定しています。 –

2

おそらく、SqlDataReaderのを見てみたい:

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

チュートリアルのほとんどは、ウィザードと少しのセットアップのために、データ認識コントロール用のデータセットに直接移行しますあなたは専門家のように見えるが、クッキーカッターである。あなたのプロモーションをお祝いします。 :) –

関連する問題