VB.NET2015からSQL Serverのデータを取得する(ADO.NET)
SQLでデータを取得するには、SELECT文を使用します。
SqlCommandクラスを作成し、CommandTextにSQL文を指定して、ExecuteReader()を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'データベースからデータの取得 Private Sub SqlSelect() Dim command As System.Data.SqlClient.SqlCommand = Con.CreateCommand() '実行するSQLクエリーを指定 command.CommandText = "SELECT * FROM FileList" '結果が返ってくるまで待機する秒数 command.CommandTimeout = 30 ' 指定した SQL コマンドを実行して SqlDataReader を構築する Dim reader As System.Data.SqlClient.SqlDataReader = command.ExecuteReader() command.Dispose() '読み込んだデータを表示 While (reader.Read()) Debug.Print(reader(0).ToString + "," + reader(1).ToString + "," + reader(2).ToString) Debug.Print(reader("Name").ToString + "," + reader("Date").ToString + "," + reader("Size").ToString) End While reader.Close() End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//データベースからデータの取得 private void SqlSelect() { System.Data.SqlClient.SqlCommand command = Con.CreateCommand(); //実行するSQLクエリーを指定 command.CommandText = "SELECT * FROM FileList"; //結果が返ってくるまで待機する秒数 command.CommandTimeout = 30; //指定した SQL コマンドを実行して SqlDataReader を構築する System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader(); command.Dispose(); //読み込んだデータを表示 while (reader.Read()) { Console.WriteLine(reader[0].ToString() + "," + reader[1].ToString() + "," + reader[2].ToString()); Console.WriteLine(reader["Name"].ToString() + "," + reader["Date"].ToString() + "," + reader["Size"].ToString()); } reader.Close(); } |
使い方は、
・Dim command As System.Data.SqlClient.SqlCommand = Con.CreateCommand()
にて、グローバル変数のconからSqlCommandクラスを作ります。
・command.CommandText = “SELECT * FROM FileList”
にて、実行するSQL文を取得します。テーブルの全項目を取得するため、*を指定します。
条件を指定する場合、例えばサイズが1000未満であれば
” WHERE Size < 1000″を追加します。
・Dim reader As System.Data.SqlClient.SqlDataReader = command.ExecuteReader()
SqlDataReaderクラスを作り、ExecuteReader()を実行します。
・reader.Read()がTrueの間、データを読み込む。
条件に一致するデータが複数ある場合、繰り返し実行してデータを読み込みます。
配列としてIndexを指定するか名前を指定すれば必要なデータを得ることができます。
当然ですが、存在しない名前やIndexを指定するとエラーになります。
条件を指定する場合は、パラメータ変数を使うなど、SQLインジェクションに気をつけましょう。
ディスカッション
コメント一覧
まだ、コメントがありません