ユーザ用ツール

サイト用ツール


powershell:form_sqlite_db_viewer

SQLiteによる簡易DBビューワー

# Form用のモジュールを読み込み
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
 
# sqlite3.dll を読み込む
Add-Type -Path "C:\dll\System.Data.SQLite.dll"
 
# --- クエリ実行関数 ---
function showAllRecords {
    param(
        [System.Data.SQLite.SQLiteConnection]$connection
    )
 
    $dataTable = New-Object System.Data.DataTable
 
    $cmd = $connection.CreateCommand()
    $cmd.CommandText = "SELECT shop, product_name, url FROM haru_master LIMIT 100;"
 
    $reader = $cmd.ExecuteReader()
# スキーマ作成
    for ($i=0; $i -lt $reader.FieldCount; $i++) {
        $dataTable.Columns.Add($reader.GetName($i))
    }
 
# データ追加
    while ($reader.Read()) {
        $row = $dataTable.NewRow()
        for ($i=0; $i -lt $reader.FieldCount; $i++) {
            $row[$i] = $reader.GetValue($i)
        }
        $dataTable.Rows.Add($row)
    }
 
    $reader.Close()
 
#    $adapter = New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
 
#    $adapter.Fill($dataTable) | Out-Null
 
    return $dataTable
}
 
# --- テーブルデータを表示 ---
function showData {
    param (
        [System.Data.SQLite.SQLiteConnection]$Connection
    )
 
    $cmd = $Connection.CreateCommand()
    $cmd.CommandText = "SELECT shop, product_name, url FROM "
 
    try {
        $results = New-Object System.Collections.Generic.IList[object]
        return $null
    }
    catch {
        return $null
    }
}
 
# --- 検索用関数 ---
function searchRecords {
    param (
        [System.Data.SQLite.SQLiteConnection]$connection,
        [string]$table_name,
        [string]$keyword
    )
 
    $dataTable = New-Object System.Data.DataTable
    $cmd = $connection.CreateCommand()
    $cmd.CommandText = "SELECT * FROM haru_master WHERE product_name LIKE '%PENN%' COLLATE NOCASE LIMIT 500;"
#    $null = $cmd.Parameters.AddWithValue("@kw", "%$keyword%")
 
    $adapter = New-Object System.Data.SQLite.SQLiteDataAdapter($cmd)
    $adapter.Fill($dataTable) | Out-Null
    return $dataTable
}
 
# 初期化処理
# DBのファイルパス
$dbFile = "C:\databases\database.db"
$connStr = "Data Source=$dbFile;Version=3;"
# SQLite 接続オブジェクトを作成
$conn = New-Object System.Data.SQLite.SQLiteConnection($connStr)
$conn.Open()
 
 
# フォーム作成
$form = New-Object System.Windows.Forms.Form
$form.Text = "簡易DBクライアント"
$form.MinimumSize = New-Object System.Drawing.Size(900,600)
$form.Size = New-Object System.Drawing.Size(1200,800)
 
# 検索フィールドラベル
$searchLabel = New-Object System.Windows.Forms.Label
$searchLabel.Text = "キーワード"
$searchLabel.Location = New-Object System.Drawing.Point(20,20)
$searchLabel.Size = New-Object System.Drawing.Size(100,15)
 
# 検索テキストボックス
$searchTextBox = New-Object System.Windows.Forms.TextBox
$searchTextBox.Location = New-Object System.Drawing.Point(120,15)
$searchTextBox.Width = $form.ClientSize.Width - 250
$searchTextBox.Anchor = [System.Windows.Forms.AnchorStyles]::Top `
    -bor [System.Windows.Forms.AnchorStyles]::Left `
    -bor [System.Windows.Forms.AnchorStyles]::Right
 
# レコード表示ボタン
$btnShow = New-Object System.Windows.Forms.Button
$btnShow.Text = "表示"
$btnShow.Location = New-Object System.Drawing.Point(20,40)
 
# レコード表示ボタンイベント
$btnShow.Add_Click({
#    $dataTable = showAllRecords -connection $conn
 
    $cmd = $conn.CreateCommand()
    $cmd.CommandText = "SELECT * FROM haru_master;"
    $dataTable = New-Object System.Data.DataTable
 
    $adapter = New-Object System.Data.SQLite.SQLiteDataAdapter $cmd
    $adapter.Fill($dataTable)
 
    Write-Host $dataTable.Rows.Count
 
    $dataGrid.DataSource = $dataTable
    $dataGrid.Refresh()
 
})
 
# 検索ボタン
$btnSearch = New-Object System.Windows.Forms.Button
$btnSearch.Text = "検索"
$btnSearch.Location = New-Object System.Drawing.Point(1080,15)
$btnSearch.Anchor = [System.Windows.Forms.AnchorStyles]::Top `
    -bor [System.Windows.Forms.AnchorStyles]::Right
 
# 検索ボタンクリックイベント
$btnSearch.Add_Click({
    if ([string]$tbListArea.SelectedItem -ne $null) {
        $table_name = ([string]$tbListArea.SelectedItem).Trim()
        $keyword = [string]$searchTextBox.Text
        $dataTable = searchRecords -connection $conn -table_name $table_name -keyword $keyword
        $dataGrid.DataSource = $dataTable
        $dataTable | Format-Table -AutoSize
    } else {
        Write-Host "Dame"
    }
})
 
# DataGridView
$dataGrid = New-Object System.Windows.Forms.DataGridView
$dataGrid.Location = New-Object System.Drawing.Point(20,80)
$dataGrid.Height = $form.ClientSize.Height - 90
$dataGrid.Width = $form.ClientSize.Width - 50
$dataGrid.AutoSizeColumnsMode = "Fill"
#$dataGrid.AllowUserToAddRows = $true
#$dataGrid.AllowUserToDeleteRows = $true
$dataGrid.ReadOnly = $true
$dataGrid.Anchor = [System.Windows.Forms.AnchorStyles]::Top `
    -bor [System.Windows.Forms.AnchorStyles]::Bottom `
    -bor [System.Windows.Forms.AnchorStyles]::Left `
    -bor [System.Windows.Forms.AnchorStyles]::Right
 
 
# コントロールを追加
$form.Controls.Add($searchLabel)
$form.Controls.Add($searchTextBox)
$form.Controls.Add($dataGrid)
$form.Controls.Add($btnShow)
$form.Controls.Add($btnSearch)
 
# --- フォームを閉じたら DB も閉じる ---
$form.Add_FormClosed({ $conn.Close() })
 
# フォームを表示
[void]$form.ShowDialog()
powershell/form_sqlite_db_viewer.txt · 最終更新: 2025/10/03 07:33 by mikoto