using System;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Configuration;
using System.Data;
namespace ajax研修 //システムによって修正してください。
{
/// <summary>
/// SQL接続クラス
/// データベースへ接続クラス
/// </summary>
public class datalink
{
//データベースを接続する
private SqlConnection myConnection;
/// <summary>
/// データベースを開く
/// </summary>
public void Open(string strConnection )
{
// Webconfigから,引数をもらう
if (myConnection == null)
{
myConnection = new SqlConnection(ConfigurationSettings.AppSettings[strConnection].ToString());
}
if(myConnection.State == ConnectionState.Closed)
{
try
{
//開く
myConnection.Open();
}
catch
{
}
}
}
/// <summary>
/// データベースを閉じる
/// </summary>
public void Close()
{
///接続するかどうか
if(myConnection != null)
{
///開くかどうか
if(myConnection.State == ConnectionState.Open)
{
myConnection.Close();
}
}
}
/// <summary>
/// 資源を消す
/// </summary>
private void Dispose()
{
// 閉めることを確認する
if (myConnection != null)
{
myConnection.Dispose();
myConnection = null;
}
}
/// <summary>
/// 創建一つSqlCommand対象、sql文とストアドを実行するために,SqlTypeについて、1はSQL文、0はストアドを代表です。
/// </summary>
/// <param name="TextName">SQL文とストアド名称</param>
/// <param name="prams">ストアド引数</param>
/// <param name="dbstring" >DB接続</param>
/// <param name="sql_OR_Proc">SQL文とストアドを区分する</param>
/// <returns>SqlCommand対象</returns>
private SqlCommand CreateCommand(string sqlText, SqlParameter[] prams,int SqlType,string dbstring)
{
Open(dbstring);
SqlCommand cmd = new SqlCommand(sqlText, myConnection);
switch(SqlType)
{
case 0:
cmd.CommandType = CommandType.StoredProcedure;
break;
case 1:
cmd.CommandType = CommandType.Text;
break;
default:
cmd.CommandType = CommandType.StoredProcedure;
break;
}
///引数をもらう
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
///創建したSqlCommandの対象を返る
return cmd;
}
/// <summary>
/// SQLを実行(SELECT)、DataSetの値を返る
/// </summary>
/// <param name="sqlText">sqlの文</param>
/// <param name="dbstring" >DB接続</param>
///<returns>DataSet 返る値</returns>
public DataSet RunSql_ds(string sqlText,string dbstring)
{
///
SqlCommand cmdsql = CreateCommand(sqlText,null,1,dbstring);
DataSet ds=new DataSet();
try
{
SqlDataAdapter myda=new SqlDataAdapter(cmdsql);
myda.Fill(ds);
return ds;
}
catch(Exception er)
{
return null;
}
finally
{
///データベースを閉じる
Close();
}
}
/// <summary>
/// SQLを実行(UPDATE、INSERT、DELETE)、返る値はない時
/// </summary>
/// <param name="sqlText">SQLの文</param>
/// <param name="dbstring" >DB接続</param>
/// <returns>Bool返る値</returns>
public bool RunSql_bool(string sqlText,string dbstring)
{
///
SqlCommand cmdsql = CreateCommand(sqlText,null,1,dbstring);
try
{
///実行する
cmdsql.ExecuteNonQuery();
return true;
}
catch
{
///エラーがある
return false;
}
finally
{
///データベースを閉じる
Close();
}
}
/// <summary>
/// SQLを実行(SELECTの文)、SqlDataReaderの値を返る
/// </summary>
/// <param name="sqlText">SQLの文</param>
/// <param name="dbstring">DB接続</param>
/// <returns> SqlDataReader 返る値</returns>
public SqlDataReader RunSql_dr(string sqlText,string dbstring)
{
SqlCommand cmdsql = CreateCommand(sqlText,null,1,dbstring);
try
{
SqlDataReader dr=cmdsql.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
catch
{
return null;
}
finally
{
///データベースを閉じる
Close();
}
}
/// <summary>
/// SQLを実行(SELECT),return 検索結果の第一行、第一列の値があるかどうか
/// </summary>
/// <param name="sqlText">SQLの文</param>
/// <param name="dbstring">DB接続</param>
/// <returns>Bool 返る値</returns>
public bool RunSql_selectFristRowbool(string sqlText,string dbstring)
{
///
SqlCommand cmdsql = CreateCommand(sqlText,null,1,dbstring);
try
{
if(cmdsql.ExecuteScalar()!=null)
{
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
finally
{
///データベースを閉じる
Close();
}
}
/// <summary>
/// SQLを実行(SELECT),return 検索結果の第一行、第一列の値
/// </summary>
/// <param name="sqlText">sqlの文</param>
/// <param name="dbstring">DB接続</param>
/// <returns>Object 返る値</returns>
public object RunSql_selectFristRow(string sqlText,string dbstring)
{
///
SqlCommand cmdsql = CreateCommand(sqlText,null,1,dbstring);
try
{
return (cmdsql.ExecuteScalar());//object
}
catch
{
///エラーのある
return null;
}
finally
{
///データベースを閉じる
Close();
}
}
/// <summary>
/// ストアドを実行,輸入引数がある
/// </summary>
/// <param name="procName">ストアドの名称</param>
/// <param name="prams"> ストアドの引数</param>
/// <param name="dbstring">DB接続</param>
/// <returns>Bool 返る値</returns>
public bool RunProc_bool(string procName, SqlParameter[] prams,string dbstring)
{
SqlCommand cmd = CreateCommand(procName, prams,0,dbstring);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch(Exception er)
{
return false;
}
finally
{
Close();
}
}
/// <summary>
/// ストアドを実行,輸入引数がない、輸出引数もない bool
/// </summary>
/// <param name="procName">ストアドの名称</param>
/// <param name="dbstring">DB接続</param>
/// <returns>Bool 返る値</returns>
public bool RunProc_bool(string procName,string dbstring)
{
SqlCommand cmd = CreateCommand(procName, null,0,dbstring);
try
{
cmd.ExecuteNonQuery();
return true;
}
catch
{
return false;
}
finally
{
Close();
}
}
/// <summary>
/// ストアドを実行,輸入引数がない
/// </summary>
/// <param name="procName">ストアドの名称</param>
/// <param name="dbstring">DB接続</param>
/// <returns>DataSet 返る値</returns>
public DataSet RunProc_ds(string procName,string dbstring)
{
SqlCommand cmd = CreateCommand(procName, null,0,dbstring);
DataSet ds=new DataSet();
try
{
SqlDataAdapter myda=new SqlDataAdapter(cmd);
myda.Fill(ds);
return ds;
}
catch
{
return null;
}
finally
{
///データベースを閉じる
Close();
}
}
/// <summary>
/// ストアドを実行,輸入引数がある
/// </summary>
/// <param name="procName">ストアド名</param>
/// <param name="dbstring">DB接続定義</param>
/// <param name="prams">ストアドの引数</param>
/// <returns></returns>
public DataSet RunProc_ds(string procName, string dbstring,SqlParameter[] prams)
{
DataSet ds=new DataSet();
SqlCommand cmd = CreateCommand(procName, prams,0,dbstring);
try
{
SqlDataAdapter myda=new SqlDataAdapter(cmd);
myda.Fill(ds);
return ds;
}
catch
{
return null;
}
finally
{
Close();
}
}
/// <summary>
/// ストアドの引数を創建
/// </summary>
/// <param name="ParamName">ストアドの名称</param>
/// <param name="DbType">引数のtype</param>
/// <param name="Size">引数size</param>
/// <param name="Direction">引数の方向</param>
/// <param name="Value">引数値</param>
/// <returns>新しいparameter対象</returns>
private SqlParameter CreateParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;
if(Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
///引数のサイズ=0,引数のサイズを使わない
param = new SqlParameter(ParamName, DbType);
}
///outの引数を創建
param.Direction = Direction;
if (Value != null)
{
param.Value = Value;
}
///返る
return param;
}
/// <summary>
///SqlParameter入力専用の引数を創建
/// </summary>
/// <param name="ParamName">ストアドの名称</param>
/// <param name="DbType">引数のtype</param>
/// <param name="Size">引数size</param>
/// <param name="Value">引数値</param>
/// <returns>新しいparameter対象</returns>
public SqlParameter CreateInParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
///
return CreateParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
}
}
}