今回の記事はC#を使ってSQL Serverのデータテーブルにレコードを削除(データを削除)するdelete(デリート)文の書き方について解説いたします。インジェクション対策もできている文なので初心者の方も是非参考にしてみてください。
SQL Serverのデータテーブルのレコードを編集するinsert文と削除するupdate文に関しては下記記事を参考にしてください。
「【C#】SQL Serverでデータベースにデータ追加(insert)する方法。」
「【C#】SQL Serverでデータベースにデータ編集(update)する方法。」
C#でSQLパッケージをインストール
nugetのパッケージ管理より「sqlclient」をインストールします。VisualStudioのツールより「nuget管理」などからインストールしてください。
C#でSQL Serverに接続
データベースのデータを編集する際にはまず、データベースとの接続が必要です。データベースとの接続に関してはプログラムが起動時に常に確保しておくことはセキュリティ的に良くないのでその都度接続するようにプログラムを考える必要があります。
まずは下記にてデータベースに接続してみましょう。
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = ???.???.???.???"; // 接続先IP
builder.UserID = "接続ユーザ"; // 接続ユーザ名
builder.Password = "接続パスワード"; // 接続パスワード
builder.InitialCatalog = "データベース名"; // 接続するデータベース
//DB接続
try
{
using (var connection = new SqlConnection(builder.ConnectionString))
{
using (SqlCommand command = new SqlCommand(SqlWord, connection))
{
Console.WriteLine("接続成功");
}
}
}
catch
{
Console.WriteLine("接続失敗");
}
これで接続は完了です。次にデータ追加を行なっていきます。
C#でSQL Serverにデータ削除(delete)
DELETE文は下記のように記載します。
string SqlWord = "DELETE [テーブル名] WHERE [指定のカラム名] = [編集するデータ];";
これを実際にサンプルデータを入れると仮定した場合下記のようになります。
string SqlWord = "DELETE [テーブル名] WHERE Key = 002;";
//上記のINSERT文は下記のようなテーブルにデータを入れる例
//|key|Val1|Val2|
//|001|1111|1112|
//|002|2221|2222|
↓実行すると
//|key|Val1|Val2|
//|001|1111|1112|
これにSQLインジェクション対策を施すと下記のようになります。
string SqlWord = "DELETE [テーブル名] WHERE Key = @Key;";
using (SqlCommand command = new SqlCommand(SqlWord, connection))
{
command.Parameters.AddWithValue("@Key", "002");
}
では上記を加えて一通りの処理を下記のように追加します。
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = ???.???.???.???"; // 接続先IP
builder.UserID = "接続ユーザ"; // 接続ユーザ名
builder.Password = "接続パスワード"; // 接続パスワード
builder.InitialCatalog = "データベース名"; // 接続するデータベース
//検索文作成
string SqlWord = "DELETE [テーブル名] WHERE Key = @Key;";
//DB接続
try
{
using (var connection = new SqlConnection(builder.ConnectionString))
{
using (SqlCommand command = new SqlCommand(SqlWord, connection))
{
command.Parameters.AddWithValue("@Key", "002");
//実行
command.ExecuteNonQuery();
}
}
}
catch
{
Console.WriteLine("接続失敗");
}
上記のコードで指定のデータベースのテーブルのレコードを編集することができます。インジェクション対策に関してもこちらで問題なく実装できています。
では、今回の記事は以上です。他にもC#間連の記事を記載しているので気になる方は是非参考にしてみてください。
コメント
[…] 「【C#】SQL Serverでデータベースにデータ削除(delete)する方法。」 […]