これを行うためのより良い方法があるかどうかはわかりませんが、これが私の現在の設定です。
- データベースからテーブル構造を表す XSD ファイルを作成しました。
- 以下のような関数を保持するクラス ファイルを作成しました。
コードサンプル:
Public Function GetUser(ByVal UserID As String) As xsdUser.UserDataTable
Dim SqlConn As New SqlConnection(ConfigurationManager.ConnectionStrings("MyDatabase").ConnectionString)
Dim SqlCom = New SqlCommand("User_Retrieve", SqlConn)
Dim Adapter As SqlDataAdapter
Dim UserDT As New xsdUser.UserDataTable
Using SqlCom
SqlCom.Parameters.Add(New SqlParameter("@I_UserID", SqlDbType.NVarChar, 4)).Value = UserID
Adapter = New SqlDataAdapter(SqlCom)
Adapter.Fill(UserDT)
End Using
If UserDT IsNot Nothing AndAlso UserDT.Rows.Count > 0 Then
'Return DataTable here or I guess DataRow since there should just be one.
Else
'Handle Error here if there is no row
End If
End Function
たった1つのファイルに含まれるべきことを2つのファイルで行うのは奇妙に思えます。「User」という名前のクラスファイルが1つあり、そこにメンバー変数があり、上記のようなクラス関数が必要だと思います。しかし、私が目にするチュートリアルはすべて、これらのデータ テーブルを使用しています。その上、関数の最後の if ステートメントを処理する方法がわかりません。行が 1 つしかないため、DataTable 全体を返す必要はないと思います。また、関数がデータ テーブルを返すことになっている場合にエラーを処理する方法もわかりません。空のテーブルを返すことができ、コードでテーブルが空の場合はそこで処理すると思いますが、これも面倒です。
では、誰でもこれらのことのいくつかを解決できますか? これは、ストアド プロシージャから情報を取得する一般的な方法ですか? または、検索結果に表示されない最新の方法はありますか?
ありがとう!