分かりやすく、使いやすく。

SQL Server に接続してテーブルの内容を SELECT する方法

スポンサーリンク

SQL Server に接続してテーブルの内容を SELECT する方法を説明するために事前準備としてデータベース、テーブルとテストデータを用意し、その後にサンプルコードを提示します。

  1. 事前準備
  2. SQL Server で SELECT するサンプルコード(Windows認証で接続)
  3. SQL Server で SELECT するサンプルコード(SQL Server認証で接続)


事前準備

最初にサンプルコードを実行する為の「テスト」という名前のデータベースを作成してください。その後、以下の SQL を実行してテスト用のテーブルとテストデータを準備します。

テスト用テーブル作成用SQL
1
2
3
4
5
CREATE TABLE dbo.ITEM_LIST(
  ID    varchar(10)  NOT NULL,
  NAME  varchar(100) NOT NULL,
  PRICE int          NOT NULL
) 

テーブルができたら、以下の SQL を実行してテストデータを登録してください。

テストデータ登録用SQL
1
2
3
4
5
6
INSERT INTO dbo.ITEM_LIST VALUES
  ('00001','りんご',100)
, ('00002','みかん',200)
, ('00003','ぶどう',300)
, ('00004','いちご',400)
, ('00005','きうい',500); 

SQL Server で SELECT するサンプルコード(Windows認証で接続)

以下のサンプルコードでは、 Windows 認証で SQL Server に接続した後 SELECT 文でデータ抽出を行い、抽出した内容を表示しています。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
[System.Data.SqlClient.SqlConnection]$objConnection = $null;
[System.Data.SqlClient.SqlCommand]$objCommand       = $null;
[System.Data.SqlClient.SqlDataAdapter]$objAdapter   = $null;
[System.Data.DataSet]$objDataset = $null;
[System.Data.DataTable]$objTable = $null;
[string]$strServer = '';
[string]$strInstance = ''; 
[string]$strDatabase = '';
[string]$strSQL = '';
[string]$strConnectionString  = '';
 
$strServer   = 'localhost'; #サーバーを指定
$strInstance = 'SQLEXPRESS';#インスタンスを指定
$strDatabase = 'テスト';    #データベースを指定
 
#実行するSQL
$strSQL = 'SELECT * FROM dbo.ITEM_LIST ORDER BY ID;';
 
#接続文字列を作成
#windows認証を使用する場合、Integrated Security=True にする。
$strConnectionString = @"
Data Source=$strServer\$strInstance;
Initial Catalog=$strDatabase;
Integrated Security=True;
"@ 
 
$objConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection;
$objConnection.ConnectionString = $strConnectionString;
$objCommand = $objConnection.CreateCommand();
$objCommand.CommandText = $strSQL;
 
$objAdapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $objCommand;
$objDataset = New-Object -TypeName System.Data.DataSet;
 
#データセットにCommandTextの実行結果をセット
#戻り値の数値は不要の為、[void]をつけている。
[void]$objAdapter.Fill($objDataset);
 
#DataSetにセットされた1個目のテーブルを取り出す
$objTable = $objDataset.Tables[0];
 
Write-Host '***** データの1行目を表示 *****';
if($objTable.Rows.Count -gt 0){
  Write-Host ('1行目のID   :' + $objTable.Rows[0].Item('ID'));
  Write-Host ('1行目のNAME :' + $objTable.Rows[0].Item('NAME'));
  Write-Host ('1行目のPRICE:' + $objTable.Rows[0].Item('PRICE'));
}else{
  Write-Host 'データはありません。';
}
 
Write-Host '***** データを全件ループして表示 *****';
foreach($objRow in $objTable.Rows){
  Write-Host ('ID:'     + $objRow.Item('ID') + `
              '、名前:' + $objRow.Item('NAME') + `
              '、価格:' + $objRow.Item('PRICE'));
} 
 
#各種リソースの破棄
$objConnection.Close();
$objConnection.Dispose();
$objCommand.Dispose();
$objDataset.Dispose();
$objAdapter.Dispose(); 

実行結果は次の通りです。

***** データの1行目を表示 *****
1行目のID   :00001
1行目のNAME :りんご
1行目のPRICE:100
***** データを全件ループして表示 *****
ID:00001、名前:りんご、価格:100
ID:00002、名前:みかん、価格:200
ID:00003、名前:ぶどう、価格:300
ID:00004、名前:いちご、価格:400
ID:00005、名前:きうい、価格:500 

SQL Server で SELECT するサンプルコード(SQL Server認証で接続)

以下のサンプルコードでは、 SQL Server 認証で SQL Server に接続した後 SELECT 文でデータ抽出を行い、抽出した内容を表示しています。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
[System.Data.SqlClient.SqlConnection]$objConnection = $null;
[System.Data.SqlClient.SqlCommand]$objCommand       = $null;
[System.Data.SqlClient.SqlDataAdapter]$objAdapter   = $null;
[System.Data.DataSet]$objDataset = $null;
[System.Data.DataTable]$objTable = $null;
[string]$strServer = '';
[string]$strInstance = ''; 
[string]$strDatabase = '';
[string]$strUserId   = '';
[string]$strPassword = '';
[string]$strSQL = '';
[string]$strConnectionString  = '';
 
$strServer   = 'localhost'; #サーバーを指定
$strInstance = 'SQLEXPRESS';#インスタンスを指定
$strDatabase = 'テスト';    #データベースを指定
$strUserId   = 'sa';        #ユーザーIDを指定
$strPassword = 'password';  #パスワードを指定
 
#実行するSQL
$strSQL = 'SELECT * FROM dbo.ITEM_LIST ORDER BY ID;';
 
#接続文字列を作成
#SQL Server 認証をする場合はユーザーIDとパスワードの記述が必要
$strConnectionString = @"
Data Source=$strServer\$strInstance;
Initial Catalog=$strDatabase;
User ID=$strUserId;
Password=$strPassword;
"@ 
 
$objConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection;
$objConnection.ConnectionString = $strConnectionString;
$objCommand = $objConnection.CreateCommand();
$objCommand.CommandText = $strSQL;
 
$objAdapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $objCommand;
$objDataset = New-Object -TypeName System.Data.DataSet;
 
#データセットにCommandTextの実行結果をセット
#戻り値の数値は不要の為、[void]をつけている。
[void]$objAdapter.Fill($objDataset);
 
#DataSetにセットされた1個目のテーブルを取り出す
$objTable = $objDataset.Tables[0];
 
Write-Host '***** データの1行目を表示 *****';
if($objTable.Rows.Count -gt 0){
  Write-Host ('1行目のID   :' + $objTable.Rows[0].Item('ID'));
  Write-Host ('1行目のNAME :' + $objTable.Rows[0].Item('NAME'));
  Write-Host ('1行目のPRICE:' + $objTable.Rows[0].Item('PRICE'));
}else{
  Write-Host 'データはありません。';
}
 
Write-Host '***** データを全件ループして表示 *****';
foreach($objRow in $objTable.Rows){
  Write-Host ('ID:'     + $objRow.Item('ID') + `
              '、名前:' + $objRow.Item('NAME') + `
              '、価格:' + $objRow.Item('PRICE'));
} 
 
#各種リソースの破棄
$objConnection.Close();
$objConnection.Dispose();
$objCommand.Dispose();
$objDataset.Dispose();
$objAdapter.Dispose(); 

実行結果は次の通りです。

***** データの1行目を表示 *****
1行目のID   :00001
1行目のNAME :りんご
1行目のPRICE:100
***** データを全件ループして表示 *****
ID:00001、名前:りんご、価格:100
ID:00002、名前:みかん、価格:200
ID:00003、名前:ぶどう、価格:300
ID:00004、名前:いちご、価格:400
ID:00005、名前:きうい、価格:500 
スポンサーリンク