using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace Build
{
class DataBase
{
public SqlConnection getConnection()
{
return new SqlConnection("server=.;uid=sa;pwd=111111;database=build");
}
SqlConnection con = null;
/// <summary>
/// 執行SQL語句
/// </summary>
/// <param name="sql">sql語句</param>
/// <returns>返回一具體值</returns>
public object QueryScalar(string sql)
{
Open();//打開數據庫連接
object result = null;
try
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
result = cmd.ExecuteScalar();
return result;
}
}
catch
{
return null;
}
}
/// <summary>
/// 執行SQL語句
/// </summary>
/// <param name="sql">SQL語句</param>
/// <param name="prams">參數</param>
/// <returns>返回具體值</returns>
private object QueryScalar(string sql,SqlParameter[] prams)
{
Open();
object result = null;
try
{
using (SqlCommand cmd = CreateCommandSql(sql, prams))
{
result = cmd.ExecuteScalar();
return result;
}
}
catch
{
return null;
}
}
/// <summary>
/// 創建一個SqlCommand對象,用來構建SQL語句
/// </summary>
/// <param name="sql">SQL語句</param>
/// <param name="prams">SQL需要的參數</param>
/// <returns>返回帶參數的SQL語句</returns>
public SqlCommand CreateCommandSql(string sql, SqlParameter[] prams)
{
Open();
SqlCommand cmd = new SqlCommand(sql, con);
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
return cmd;
}
//打開數據庫連接
private void Open()
{
if (con == null)
{
con = new SqlConnection("server=.;uid=sa;pwd=111111;database=build");
}
if (con.State == ConnectionState.Closed)
{
con.Open();
}
}
/// <summary>
/// 執行SQL語句
/// </summary>
/// <returns>返回DataTable</returns>
public DataTable Query(string sql)
{
Open();
using (SqlDataAdapter sqlda = new SqlDataAdapter(sql, con))
{
using (DataTable dt = new DataTable())
{
sqlda.Fill(dt);
return dt;
}
}
}
/// <summary>
/// 執行SQL語句
/// </summary>
/// <param name="sql">SQL語句</param>
/// <param name="prams">參數</param>
/// <returns>返回DataTable</returns>
public DataTable Query(string sql, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommandSql(sql,prams);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
return dt;
}
}
}
/// <summary>
/// 執行SQL語句,返回受影響的行數
/// </summary>
/// <param name="sql">SQL語句</param>
/// <returns>受影響的行數</returns>
public int RunSql(string sql)
{
int results = -1;
try
{
Open();
using (SqlCommand cmd = new SqlCommand(sql, con))
{
results = cmd.ExecuteNonQuery();
con.Close();
return results;
}
}
catch
{
return 0;
}
}
/// <summary>
/// 執行SQL語句,返回受影響的行數
/// </summary>
/// <param name="sql">SQL語句</param>
/// <param name="prams">SQL語句所需要的參數</param>
/// <returns>受影響的行數</returns>
public int RunSql(string sql, SqlParameter[] prams)
{
int results = -1;
try
{
using (SqlCommand cmd = CreateCommandSql(sql, prams))
{
results = cmd.ExecuteNonQuery();
this.Close();
return results;
}
}
catch
{
return 0;
}
}
//關閉數據庫連接
public void Close()
{
if (con != null)
{
con.Close();
}
}
/// <summary>
/// 執行SQL語句,返回一個SqlDataReader
/// </summary>
/// <param name="sql"></param>
/// <param name="dataReader"></param>
public void RunSql(string sql, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommandSql(sql, null);
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
public void RunSql(string sql, SqlParameter[] prams, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommandSql(sql, prams);
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
/// <summary>
/// 執行存儲過程
/// </summary>
/// <returns></returns>
public int RunProc(string procName)
{
SqlCommand cmd = CreateCommand(procName,null);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
}
/// <summary>
/// 執行存儲過程,返回受影響的行數
/// </summary>
/// <param name="procName">存儲過程名字</param>
/// <param name="prams">存儲過程的參數</param>
/// <returns>受影響的行數</returns>
public int RunProc(string procName, SqlParameter[] prams)
{
SqlCommand cmd = CreateCommand(procName, prams);
cmd.ExecuteNonQuery();
this.Close();
return (int)cmd.Parameters["ReturnValue"].Value;
}
/// <summary>
/// 執行存儲過程,返回SqlDataReader
/// </summary>
/// <param name="procName">存儲過程名字</param>
/// <param name="dataReader">返回SqlDataReader</param>
public void RunProc(string procName,out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(procName, null);
dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(procName,prams);
dataReader = cmd.ExecuteReader();
}
/// <summary>
/// 創建一個SqlCommand對象,用來執行存儲過程
/// </summary>
/// <param name="procName">存儲過程名稱</param>
/// <param name="prams">參數</param>
/// <returns>SqlCommand對象</returns>
private SqlCommand CreateCommand(string procName,SqlParameter[] prams)
{
Open();
SqlCommand cmd = new SqlCommand(procName,con);
cmd.CommandType = CommandType.StoredProcedure;
if (prams != null)
{
foreach (SqlParameter parameter in prams)
{
cmd.Parameters.Add(parameter);
}
}
cmd.Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));
return cmd;
}
/// <summary>
/// 對DateTime類型做限制
/// </summary>
/// <returns></returns>
public SqlParameter MakeInParamDate(string paramName, SqlDbType dbType, int size, DateTime value)
{
if (value.ToShortDateString() == "0001-1-1")
{
return MakeParam(paramName, dbType, size, ParameterDirection.Input, System.DBNull.Value);
}
else
{
return MakeParam(paramName,dbType,size,ParameterDirection.Input,value);
}
}
public SqlParameter MakeParam(string paramName,SqlDbType dbType,int size,ParameterDirection direction,object value)
{
SqlParameter param;
if (size > 0)
{
param=new SqlParameter(paramName,dbType,size);
}
else
{
param = new SqlParameter(paramName,dbType);
}
param.Direction = direction;
if (!(direction == ParameterDirection.Output && value == null))
{
param.Value = value;
}
return param;
}
/// <summary>
/// 完成對string類型數據的限制
/// </summary>
/// <returns></returns>
public SqlParameter MakeInParamStr(string paramName,SqlDbType dbType,int size,string value)
{
if (value == null)
{
return MakeParam(paramName, dbType, size, ParameterDirection.Input, System.DBNull.Value);
}
else
{
return MakeParam(paramName, dbType, size, ParameterDirection.Input, value);
}
}
/// <summary>
/// 對Int,float類型的限制
/// </summary>
public SqlParameter MakeInParamIntF(string paramName, SqlDbType dbType, int size, object value)
{
if (float.Parse(value.ToString()) == 0)
{
return MakeParam(paramName, dbType, size, ParameterDirection.Input, System.DBNull.Value);
}
else
{
return MakeParam(paramName, dbType, size, ParameterDirection.Input, value);
}
}
public SqlParameter MakeInParam(string paramName, SqlDbType dbType, object value)
{
return MakeParam(paramName,dbType,0,ParameterDirection.Input,value);
}
public SqlParameter MakeInParam(string paramName, SqlDbType dbType, int size, object value)
{
return MakeParam(paramName, dbType, size, ParameterDirection.Input, value);
}
public SqlParameter MakeOutParam(string paramName,SqlDbType dbType,int size)
{
return MakeParam(paramName,dbType,size,ParameterDirection.Output,null);
}
public SqlParameter MakeReturnParam(string paramName,SqlDbType dbType,int size)
{
return MakeParam(paramName,dbType,size,ParameterDirection.ReturnValue,null);
}
}
}