あくまでサンプルのため参考までに。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace Sample.classes
{
/// <summary>
/// データベースアクセスクラス
/// </summary>
public class SqlDataBase
{
#region メンバ
/// <summary>
/// ユーザー
/// </summary>
public string user { get; set; }
/// <summary>
/// パスワード
/// </summary>
public string password { get; set; }
/// <summary>
/// サーバー名
/// </summary>
public string dataource { get; set; }
/// <summary>
/// 接続先指定
/// </summary>
private ConnectionDB connectionDB = ConnectionDB.Session;
/// <summary>
/// SQL接続オブジェクト
/// </summary>
private SqlConnection connection;
public SqlConnection Connection
{
get { return connection; }
set { connection = value; }
}
/// <summary>
/// Transactionオブジェクト
/// </summary>
private SqlTransaction transaction;
public SqlTransaction Transaction
{
get { return transaction; }
set { transaction = value; }
}
/// <summary>
/// ログファイル出力オブジェクト
/// </summary>
//private OutLog log;
//public OutLog Log
//{
// get { return log; }
// set { log = value; }
//}
# endregion
#region 定数
public const String DEFAULT_LOG_FILE_NAME = "SqlConnectLog.log";
public const long DEFAULT_LOG_MAX_SIZE = 100000;
#endregion
#region コンストラクタ
/// <summary>
/// コンストラクタ(既定)
/// </summary>
public SqlDataBase() : this(DEFAULT_LOG_FILE_NAME) { }
/// <summary>
/// コンストラクタ(拡張)
/// </summary>
/// <param name="logFileName"></param>
public SqlDataBase(String logFileName)
{
Connection = null;
Transaction = null;
//Log = new OutLog(DEFAULT_LOG_MAX_SIZE, logFileName);
}
/// <summary>
/// コンストラクタ
/// </summary>
public SqlDataBase(ConnectionDB config)
{
this.connectionDB = config;
}
#endregion
#region メソッド
/// <summary>
/// 接続
/// </summary>
public void Connect( )
{
try
{
if (Connection == null)
{
Connection = new SqlConnection();
}
// 接続文字列の取得
Connection.ConnectionString = GetConnectionString();
// オープン
Connection.Open();
}
catch (SqlException ex)
{
// Log.Write("DB接続(Connect)で障害が発生しました。" + ":" + ex.Message);
}
}
/// <summary>
/// 切断
/// </summary>
public void DisConnect()
{
try
{
Connection.Close();
Connection.Dispose();
}
catch (SqlException ex)
{
// Log.Write("DB切断(DisConnect)で障害が発生しました。" + ":" + ex.Message);
}
}
/// <summary>
/// トランザクション開始
/// </summary>
public void BeginTransaction()
{
try
{
Transaction = Connection.BeginTransaction();
}
catch (SqlException ex)
{
// Log.Write("トランザクション(BeginTransaction)で障害が発生しました。" + ":" + ex.Message);
}
}
/// <summary>
/// コミット
/// </summary>
public void CommitTransaction()
{
try
{
if (Transaction != null)
{
Transaction.Commit();
}
}
catch (SqlException ex)
{
// Log.Write("コミット(CommitTransaction)で障害が発生しました。" + ":" + ex.Message);
}
finally
{
Transaction = null;
}
}
/// <summary>
/// ロールバック
/// </summary>
public void RollbackTransaction()
{
try
{
if (Transaction != null)
{
Transaction.Rollback();
}
}
catch (SqlException ex)
{
// Log.Write("ロールバック(RollbackTransaction)で障害が発生しました。" + ":" + ex.Message);
}
finally
{
Transaction = null;
}
}
/// <summary>
/// SQL実行(Boolean)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>true(正常)/false(異常)</returns>
public bool ExecuteSql_Bool(string sql)
{
try
{
SqlCommand sqlcmd = new SqlCommand(sql, Connection, Transaction);
sqlcmd.ExecuteNonQuery();
sqlcmd.Dispose();
return true;
}
catch (SqlException ex)
{
// Log.Write("SQL実行(ExecuteSql_Bool)で障害が発生しました。" + ":" + ex.Message);
return false;
}
}
/// <summary>
/// SQL実行(int)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>処理件数:0以上(正常)/-1(異常)</returns>
public int ExecuteSql_Count(string sql)
{
return ExecuteSql_Count(sql, new List<SqlParameter>());
}
/// <summary>
/// SQL実行(int)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>処理件数:0以上(正常)/0:エラー(重複)/-1:エラー(異常)</returns>
public int ExecuteSql_Count(string sql, List<SqlParameter> paramList)
{
try
{
SqlCommand sqlcmd = new SqlCommand(sql, Connection, Transaction);
// パラメータを追加する
foreach (var param in paramList)
{
sqlcmd.Parameters.Add(param);
}
int count = sqlcmd.ExecuteNonQuery();
sqlcmd.Dispose();
return count;
}
catch (SqlException ex)
{
// Log.Write("SQL実行(ExecuteSql_Count)で障害が発生しました。" + ":" + ex.Message);
switch (ex.Number)
{
case 2627:
// 重複キー
return 0;
default:
return -1;
}
}
}
/// <summary>
/// SQL実行(DataTable)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>DataTable</returns>
public DataTable ExecuteSql_DataTable(string sql)
{
return ExecuteSql_DataTable(sql, new List<SqlParameter>());
}
/// <summary>
/// SQL実行(DataTable)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>DataTable</returns>
public DataTable ExecuteSql_DataTable(string sql, List<SqlParameter> paramList)
{
DataTable dt = new DataTable();
try
{
SqlCommand sqlcmd = new SqlCommand(sql, Connection, Transaction);
// パラメータを追加する
foreach (var param in paramList)
{
sqlcmd.Parameters.Add(param);
}
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
da.Fill(dt);
da.Dispose();
sqlcmd.Dispose();
return dt;
}
catch (SqlException ex)
{
// Log.Write("SQL実行(ExecuteSql_DataTable)で障害が発生しました。" + ":" + ex.Message);
return dt;
}
}
/// <summary>
/// 接続文字列の取得
/// </summary>
/// <returns>接続文字列</returns>
public string GetConnectionString()
{
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
// Webconfigから取得
sb.DataSource = ConfigurationManager.AppSettings["DataSource"];
sb.UserID = ConfigurationManager.AppSettings["UserID"];
sb.Password = ConfigurationManager.AppSettings["Password"];
//SQLserver認証
sb.IntegratedSecurity = false;
return sb.ConnectionString;
}
# endregion
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace Sample.classes
{
/// <summary>
/// データベースアクセスクラス
/// </summary>
public class SqlDataBase
{
#region メンバ
/// <summary>
/// ユーザー
/// </summary>
public string user { get; set; }
/// <summary>
/// パスワード
/// </summary>
public string password { get; set; }
/// <summary>
/// サーバー名
/// </summary>
public string dataource { get; set; }
/// <summary>
/// 接続先指定
/// </summary>
private ConnectionDB connectionDB = ConnectionDB.Session;
/// <summary>
/// SQL接続オブジェクト
/// </summary>
private SqlConnection connection;
public SqlConnection Connection
{
get { return connection; }
set { connection = value; }
}
/// <summary>
/// Transactionオブジェクト
/// </summary>
private SqlTransaction transaction;
public SqlTransaction Transaction
{
get { return transaction; }
set { transaction = value; }
}
/// <summary>
/// ログファイル出力オブジェクト
/// </summary>
//private OutLog log;
//public OutLog Log
//{
// get { return log; }
// set { log = value; }
//}
# endregion
#region 定数
public const String DEFAULT_LOG_FILE_NAME = "SqlConnectLog.log";
public const long DEFAULT_LOG_MAX_SIZE = 100000;
#endregion
#region コンストラクタ
/// <summary>
/// コンストラクタ(既定)
/// </summary>
public SqlDataBase() : this(DEFAULT_LOG_FILE_NAME) { }
/// <summary>
/// コンストラクタ(拡張)
/// </summary>
/// <param name="logFileName"></param>
public SqlDataBase(String logFileName)
{
Connection = null;
Transaction = null;
//Log = new OutLog(DEFAULT_LOG_MAX_SIZE, logFileName);
}
/// <summary>
/// コンストラクタ
/// </summary>
public SqlDataBase(ConnectionDB config)
{
this.connectionDB = config;
}
#endregion
#region メソッド
/// <summary>
/// 接続
/// </summary>
public void Connect( )
{
try
{
if (Connection == null)
{
Connection = new SqlConnection();
}
// 接続文字列の取得
Connection.ConnectionString = GetConnectionString();
// オープン
Connection.Open();
}
catch (SqlException ex)
{
// Log.Write("DB接続(Connect)で障害が発生しました。" + ":" + ex.Message);
}
}
/// <summary>
/// 切断
/// </summary>
public void DisConnect()
{
try
{
Connection.Close();
Connection.Dispose();
}
catch (SqlException ex)
{
// Log.Write("DB切断(DisConnect)で障害が発生しました。" + ":" + ex.Message);
}
}
/// <summary>
/// トランザクション開始
/// </summary>
public void BeginTransaction()
{
try
{
Transaction = Connection.BeginTransaction();
}
catch (SqlException ex)
{
// Log.Write("トランザクション(BeginTransaction)で障害が発生しました。" + ":" + ex.Message);
}
}
/// <summary>
/// コミット
/// </summary>
public void CommitTransaction()
{
try
{
if (Transaction != null)
{
Transaction.Commit();
}
}
catch (SqlException ex)
{
// Log.Write("コミット(CommitTransaction)で障害が発生しました。" + ":" + ex.Message);
}
finally
{
Transaction = null;
}
}
/// <summary>
/// ロールバック
/// </summary>
public void RollbackTransaction()
{
try
{
if (Transaction != null)
{
Transaction.Rollback();
}
}
catch (SqlException ex)
{
// Log.Write("ロールバック(RollbackTransaction)で障害が発生しました。" + ":" + ex.Message);
}
finally
{
Transaction = null;
}
}
/// <summary>
/// SQL実行(Boolean)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>true(正常)/false(異常)</returns>
public bool ExecuteSql_Bool(string sql)
{
try
{
SqlCommand sqlcmd = new SqlCommand(sql, Connection, Transaction);
sqlcmd.ExecuteNonQuery();
sqlcmd.Dispose();
return true;
}
catch (SqlException ex)
{
// Log.Write("SQL実行(ExecuteSql_Bool)で障害が発生しました。" + ":" + ex.Message);
return false;
}
}
/// <summary>
/// SQL実行(int)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>処理件数:0以上(正常)/-1(異常)</returns>
public int ExecuteSql_Count(string sql)
{
return ExecuteSql_Count(sql, new List<SqlParameter>());
}
/// <summary>
/// SQL実行(int)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>処理件数:0以上(正常)/0:エラー(重複)/-1:エラー(異常)</returns>
public int ExecuteSql_Count(string sql, List<SqlParameter> paramList)
{
try
{
SqlCommand sqlcmd = new SqlCommand(sql, Connection, Transaction);
// パラメータを追加する
foreach (var param in paramList)
{
sqlcmd.Parameters.Add(param);
}
int count = sqlcmd.ExecuteNonQuery();
sqlcmd.Dispose();
return count;
}
catch (SqlException ex)
{
// Log.Write("SQL実行(ExecuteSql_Count)で障害が発生しました。" + ":" + ex.Message);
switch (ex.Number)
{
case 2627:
// 重複キー
return 0;
default:
return -1;
}
}
}
/// <summary>
/// SQL実行(DataTable)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>DataTable</returns>
public DataTable ExecuteSql_DataTable(string sql)
{
return ExecuteSql_DataTable(sql, new List<SqlParameter>());
}
/// <summary>
/// SQL実行(DataTable)
/// </summary>
/// <param name="sql">SQL文字列</param>
/// <returns>DataTable</returns>
public DataTable ExecuteSql_DataTable(string sql, List<SqlParameter> paramList)
{
DataTable dt = new DataTable();
try
{
SqlCommand sqlcmd = new SqlCommand(sql, Connection, Transaction);
// パラメータを追加する
foreach (var param in paramList)
{
sqlcmd.Parameters.Add(param);
}
SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
da.Fill(dt);
da.Dispose();
sqlcmd.Dispose();
return dt;
}
catch (SqlException ex)
{
// Log.Write("SQL実行(ExecuteSql_DataTable)で障害が発生しました。" + ":" + ex.Message);
return dt;
}
}
/// <summary>
/// 接続文字列の取得
/// </summary>
/// <returns>接続文字列</returns>
public string GetConnectionString()
{
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder();
// Webconfigから取得
sb.DataSource = ConfigurationManager.AppSettings["DataSource"];
sb.UserID = ConfigurationManager.AppSettings["UserID"];
sb.Password = ConfigurationManager.AppSettings["Password"];
//SQLserver認証
sb.IntegratedSecurity = false;
return sb.ConnectionString;
}
# endregion
}
}
0コメント