| 分類:[C#]
お世話になっております。
今回「データベースからデータを取得」「データベースの更新」 を行うクラスを作成してみたのですが、少し使いにくいので、皆さんにアドバイスを頂きたく質問致しました。
環境 windows7 visual C# SQLServer2008 Expressになります。
以下、クエリを送ってDataSetを返すメソッドと、DataSet渡してデータベースを更新するメソッドを持つクラスになっています。
namespace ××× { class SQLServerConnection { readonly static string DataSource = @".\SQLEXPRESS;"; readonly static string IntegratedSecurity = "True;"; readonly static string ConnectTimeOut = "30;";
private string connectionString;
#region Constructor /// <summary> /// 接続文字列を作成する。 /// </summary> /// <param name="fileName">mdbファイルのファイル名(フルパス)</param> public SQLServerConnection(string fileName) { this.connectionString = @"Data Source = " + DataSource + @"AttachDbFilename = " + fileName + ";" + @"Integrated Security = " + IntegratedSecurity + @"Connect Timeout = " + ConnectTimeOut; } #endregion
#region public Method /// <summary> /// データセットにクエリ結果をセットする。 /// </summary> /// <param name="dataset">空のデータセット</param> /// <param name="queryString">クエリ文</param> /// <param name="tableName">データテーブル名</param> /// <returns>データセット</returns> public DataSet SelectRows(string queryString, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(queryString, connection); DataSet dataset = new DataSet(); adapter.Fill(dataset, tableName);
return dataset; } }
/// <summary> /// クエリ結果を元にデータベースの更新を行う。 /// </summary> /// <param name="dataset">空のデータセット</param> /// <param name="queryString">クエリ文</param> /// <param name="tableName">データテーブル名</param> /// <returns>データセット</returns> public void SelectSqlRows(DataSet dataset, string queryString, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(queryString, connection); SqlCommandBuilder builder = new SqlCommandBuilder(adapter); adapter.Update(dataset, tableName); } } #endregion } }
ただこのクラスですと、DataSetにクエリ結果を取得するまではいいのですが、 もし既にDataSetにクエリ結果が取得されている場合でも、もう一度同じクエリをデータベース更新用メソッドに 渡してやらなければならず、あまり汎用性がないため、クラスを上手変更出来ないものかと思い質問しました。 よろしくお願い致します。 |