|
分類:[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にクエリ結果が取得されている場合でも、もう一度同じクエリをデータベース更新用メソッドに
渡してやらなければならず、あまり汎用性がないため、クラスを上手変更出来ないものかと思い質問しました。
よろしくお願い致します。
|