セキュリティ上の対策として パラメタライズドクエリ (パラメタ化クエリ、パラメータクエリ等呼ばれています) を利用すると思います。
このパラメタライズドクエリ、言語やデータベースによって指定方法が異なるのが厄介。。
C# で SQL Server に対して パラメタライズドクエリ を利用する際は @パラメータ名 でパラメータ指定します。
Command を再利用する場合、パラメータが保存されたままとなるのでパラメータ指定するキー名が被らないように注意します。
サンプルコード
using System;
using System.Configuration;
using System.Data.SqlClient;
public void Insert1(string id, string password, string role)
{
// 接続文字列の ...
ラベル SQL の投稿を表示しています。 すべての投稿を表示
C# で SQL Server に対して INSERT文 ・ UPDATE文 ・ DELETE文 を 実行する 方法
C# で SQL Server に対して変更処理(INSERT, UPDATE, DELETE)を実行する方法をまとめてみました。
目次
1行だけ実行
トランザクション処理
[おまけ] DB変更を行うSQL
INSERT
UPDATE
DELETE
1行だけ実行
単一テーブルにしか影響しないようなSQLは1行だけ実行することになると思います。
このようなSQLを実行する場合、トランザクションを考慮せずそのまま ExecuteNonQuery() を実行する方法が簡単です。
using System;
using System.Configuration;
using S ...
Akinari Tsugo
12:57
C#,
SQL,
SQL Server
C# で SQL Server から SELECT文 の 実行結果 を 取得する 方法
C# で SQL Server に対して SELECT文 を実行する際のサンプルコードを作成しました。
ここでは「SELECT文 の 実行結果 を DataTable へ投入する方法」と「SELECT文 の 実行結果 を 1行ずつ読み込んで処理していく方法」の2種類を例として取り上げます。
目次
まとめて読み込む (DataTable)
1行ずつ読み込む (SqlDataReader)
まとめて読み込む (DataTable)
DataTable へ SELECT文 の 結果 を一括読み込みしてしまう方法です。
単純で理解しやすい方法かと思います。
DataSet へ 結果投入してしまってもよいのですが、DataTable を取り出すためにワンクッション必要となるため、個人的には DataTab ...
Akinari Tsugo
12:57
C#,
SQL,
SQL Server
PL/SQL で 大量 テストデータ を 投入 する サンプルコード
Oracle データベース に 大量のテストデータ を PL/SQL を利用して投入する サンプルコード と 関連する内容 をまとめました。
目次
データ投入 の 基本形
シーケンスの取得
ランダムな値の取得
文字列結合
データ投入 の 基本形
本来なら INSERT だけでいいところなのですが… SELECT, UPDATE, DELETE も念のため組み込んだ サンプルコード を作ってみました。
SET SERVEROUTPUT ON;
DECLARE
vUSER_ID NUMBER;
vUSER_NAME VARCHAR2(100);
vRANK_CODE NUMBER;
vMAX_COUNT NUMBER := 1000;
vCOMMIT_UNIT NUMB ...
Akinari Tsugo
23:42
Oracle,
SQL
SQL*Loader で フィールド を入れる 制御ファイル サンプル
SQL * Loader の 制御ファイル (コントロールファイル) において、文字や数値、日付、シーケンスといった値を挿入する場合のサンプルを記載します。
文字 (varchar)
数値 (number)
日付 (DATE)
シーケンス (SEQUENCE)
固定値
文字 (varchar)
(
NAME
)
数値 (number)
(
AMOUNT DECIMAL EXTERNAL
)
日付型 (DATE)
(
REGISTER_DATE DATE "YYYY/MM/DD HH24:MI:SS"
)
シーケンス (SEQUENCE)
(
USER_ID "USER_ID_SEQ.NEXTVAL"
)
固定値
固定値は必要に応じてデータベースの型に変換されます。
(
column_name CO ...
Akinari Tsugo
0:22
Oracle,
SQL
SQL*Loader の 使い方
SQL*Loader を用いて oracle データベース に CSVファイル を取り込む方法について調べたので、
ここでは、もっとも単純な入門編的な位置づけで記事を記載します。
SQL*Loader を利用するにあたり、準備するファイルは "CSVファイル" と "制御ファイル (コントロール・ファイル)" の 2ファイル です。
"CSVファイル" は 投入するデータそのものを記載します。
"制御ファイル (コントロール・ファイル)" は 投入元 CSVファイル と 投入先 テーブル の マッピング を定義します。
2つのファイルが準備できたら、 sqlldr コマンド で CSVファイル を テーブル にインポートします。
目次
データ投入先テーブル
CSVファイル の 準備
制御ファイル (コントロール・ファイル) の 準備
テーブル へ ...
Akinari Tsugo
0:29
Oracle,
SQL
黒猫 SQL Studio で .mdf (SQL Server データベース ファイル) を 開く
そこに存在する SQL Server Express の データベース ファイル(拡張子 .mdf のファイル) を、黒猫 SQL Studio で開いて内容を見る方法です。
黒猫 SQL Studio は無料のツールでインストールが不要(配置のみで動作)なので、個人的には好んで使っています。
SQLコマンドはもちろん、デーブル内容の閲覧もできます。
以下では .mdf ファイル を 黒猫 SQL Studio で開くまでの手順を記載します。
黒猫ソフトウェア工房
黒猫 SQL Studio メニュー
[データベース]-[データベースに接続]を選択します。
データベース接続
[新規追加]ボタンを押下します。
接続文字列の編集
接続文字列のオプショ ...
Akinari Tsugo
16:25
SQL
VisualStudio で .mdf (SQL Server データベース ファイル) を 開く
そこに存在する SQL Server Express の データベース ファイル(拡張子 .mdf のファイル) を、Visual Studio で開いて内容を見る方法です。
あくまで "そこにある" なので、プロジェクトやソリューションに含まれている場合は除きます。
こうした状況で、具体的に データベース ファイル の内容を閲覧する手順を記載します。
Visual Studio メニュー
[表示]-[サーバー エクスプローラー]を開きます。
サーバー エクスプローラー
[データベースへの接続]ボタンを押下します。
データ ソースの選択
データ ソースで「Micosoft SQL Server」を選択し、「続行」を押下します。
...
Akinari Tsugo
16:23
SQL,
Visual Studio
Excel で .mdf (SQL Server データベース ファイル) を 開く
Visual Studio で作成した SQL Server Express の データベース ファイル(拡張子 .mdf のファイル) を、Excel で開いて内容を見る方法です。
内容を閲覧、確認する"だけ"であれば Excel で可能でした。
ここでは、その具体的な手順を記載します。
Excel を起動します。
Excel リボン
[データ]-[その他のデータ ソース]-[データ接続ウィザード]を選択します。
データ接続ウィザード
「その他/詳細」を選択して、「次へ」を選択します。
データリンク プロパティ
「プロバイダー」タブでは「Microsoft OLE DB Provider for SQL Server」を選択して、「次へ」 ...
Akinari Tsugo
21:57
SQL
C# で .mdf (SQL Server データベース ファイル) を 開く
Visual Studio の プロジェクト に追加された SQL Server データベース ファイル (mdf ファイル) を SqlConnection を用いて開いて利用する方法を見ていきます。
テーブル は サーバー エクスプローラー で 開いて GUI を使ってあらかじめ登録してあるものとします。
(サンプルコードでは Person テーブル が作られている前提の処理となっています。)
サンプルコード の ダウンロード
(※ SQL Server データベースの中身を見る or 操作するだけなら 黒猫 SQL Studio が個人的には好みです。)
サンプルコード(抜粋)
namespace DataBaseService.Controllers
{
using System;
using System.Collections.Generic; ...
Akinari Tsugo
23:37
ASP.NET,
C#,
SQL