データベースにアクセスするクラスを作ってみた
データベースにアクセスするクラスを作ってみました。クラスのメソッドはテーブルを更新するメソッド、テーブルのデータを表示するメソッドを作成しました。テーブルを更新するメソッドは引数にSQL文のリストを設定するようにしています。一度に複数のSQL文を実行できるようにしました。デストラクタはあまり使わないようです。そのため、オブジェクトの破棄は各メソッドでtry{} finaly{}でfinalyで指定したほうがよかったのかもしれません。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlServerCe;
class DBAccess { SqlCeConnection conn; // コンストラクタ public DBAccess(string dsrc, string pwrd){ conn = null; string connection_str = "Data Source = " + dsrc + "; Password ='" + pwrd + "'"; conn = new SqlCeConnection(connection_str); conn.Open(); } // デストラクタ ~DBAccess() { conn.Close(); } // テーブル更新メソッド public int RenewalTable(List<string> sql_list) { try { // SQL文実行 SqlCeCommand cmd = conn.CreateCommand(); foreach (string sql in sql_list){ cmd.CommandText = sql; cmd.ExecuteNonQuery(); } cmd.Dispose(); return 0; } catch (Exception e) { // 例外処理 Console.WriteLine(e.Message); conn.Close(); return 1; } } // テーブル参照メソッド public int ReferenceTable(string table_name) { try { // テーブル読み込み SqlCeCommand cmd = conn.CreateCommand(); cmd.CommandText = "SELECT * FROM " + table_name; SqlCeDataReader scdr = cmd.ExecuteReader(); // 画面に表示 int num = 1; while (scdr.Read()) { Console.WriteLine(num + "件目のデータ"); for (int i = 0; i <= scdr.FieldCount - 1; i++) { Console.WriteLine(scdr.GetString(i)); } Console.WriteLine(""); num++; } scdr.Close(); cmd.Dispose(); return 0; } catch (Exception e) { // 例外処理 Console.WriteLine(e.Message); conn.Close(); return 1; } } }
class Program { static void Main(string[] args) { // テーブル更新用SQLリスト作成 List<string> sql_list = new List<string>(); sql_list.Add("DELETE FROM 電話帳テーブル"); sql_list.Add("INSERT INTO 電話帳テーブル ([名前], [メールアドレス],[電話番号]) Values('ああああ', 'aaaa.jp', '1111-1111')"); sql_list.Add("INSERT INTO 電話帳テーブル ([名前], [メールアドレス],[電話番号]) Values('いいいい', 'bbbb.jp', '2222-2222')"); sql_list.Add("INSERT INTO 電話帳テーブル ([名前], [メールアドレス],[電話番号]) Values('うううう', 'cccc.jp', '3333-3333')"); sql_list.Add("INSERT INTO 電話帳テーブル ([名前], [メールアドレス],[電話番号]) Values('ええええ', 'dddd.jp', '4444-4444')"); sql_list.Add("INSERT INTO 電話帳テーブル ([名前], [メールアドレス],[電話番号]) Values('おおおお', 'eeee.jp', '5555-5555')"); sql_list.Add("UPDATE 電話帳テーブル SET 電話番号 = '9999-9999' where 名前 = 'ああああ'"); sql_list.Add("DELETE FROM 電話帳テーブル WHERE 名前 = 'うううう'"); // DBAccessオブジェクト生成 DBAccess dba = new DBAccess("dbfile3.sdf", "password123"); int res; // テーブル更新 res = dba.RenewalTable(sql_list); sql_list.Clear(); if (res != 0) { Console.WriteLine("テーブル更新に失敗しました。"); Console.ReadLine(); return; } // テーブル表示 res = dba.ReferenceTable("電話帳テーブル"); if (res != 0) { Console.WriteLine("テーブル表示に失敗しました。"); Console.ReadLine(); return; } Console.ReadLine(); return; } }