using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;// 先引用 System.Configuration
namespace Common
{
/// <summary>
/// 数据库访问辅助类,add by ngye, on 2013-08-14.
/// </summary>
public static class DBHelper
{
#region [ Tools ]
//public static string ConnectionString = ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString;
public static string ConnectionString = "Data Source=leaf-home\\sqlserver2005;Initial Catalog=Test;Persist Security Info=True;User ID=??;Password=??";
public static SqlConnection GetConnection()
{
return new SqlConnection(ConnectionString);
}
public static SqlCommand AddTimeout(this SqlCommand cmd)
{
cmd.CommandTimeout = 3600;
return cmd;
}
/// <summary>
/// 执行cmd得到 DataTable. by ngye, on 2013-08-01
/// </summary>
/// <param name="cmd"></param>
/// <returns></returns>
public static DataTable ExecuteDataTable(this SqlCommand cmd)
{
DataTable dt = new DataTable();
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
adapter.Fill(dt);
}
return dt;
}
/// <summary>
/// 为SqlParameter设置参数. by ngye, on 2013-08-15.
/// </summary>
/// <param name="sp"></param>
/// <returns></returns>
public static SqlParameter SetValue(this SqlParameter sp, object value)
{
sp.Value = value;
return sp;
}
/// <summary>
/// 为SqlParameter设置类型. by ngye, on 2013-08-15.
/// </summary>
/// <param name="sp"></param>
/// <returns></returns>
public static SqlParameter SetDbType(this SqlParameter sp, DbType dbType)
{
sp.DbType = dbType;
return sp;
}
#endregion
#region [ ExecuteNonQuery_ForProc (无参/有参) ]
/ <summary>
/// 根据存储过程,返回受影响行数
/// </summary>
/// <param name="proc">proc</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery_ForProc(string proc)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
cmd.CommandType = CommandType.StoredProcedure;
return cmd.ExecuteNonQuery();
}
}
/ <summary>
/// 根据存储过程和参数,返回受影响行数
/// </summary>
/// <param name="proc">proc</param>
/// <param name="spArr">可变参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery_ForProc(string proc, params SqlParameter[] spArr)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(spArr);
return cmd.ExecuteNonQuery();
}
}
#endregion
#region [ ExecuteNonQuery (无参/有参) ]
/ <summary>
/// 根据sql语句,返回受影响行数
/// </summary>
/// <param name="sql">sql语句</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(string sql)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
return cmd.ExecuteNonQuery();
}
}
/ <summary>
/// 根据sql语句和参数,返回受影响行数
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="spArr">可变参数</param>
/// <returns>受影响行数</returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] spArr)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
cmd.Parameters.AddRange(spArr);
return cmd.ExecuteNonQuery();
}
}
#endregion
#region [ ExecuteScalar (无参/有参) ]
/// <summary>
/// 根据sql语句,返回Scalar结果
/// </summary>
/// <param name="sql">sql语句</param>
/// <returns>object</returns>
public static object ExecuteScalar(string sql)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
object obj = cmd.ExecuteScalar();
return obj;
}
}
/// <summary>
/// 根据sql语句和参数,返回Scalar结果
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="spArr">可变参数</param>
/// <returns>object</returns>
public static object ExecuteScalar(string sql, params SqlParameter[] spArr)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
cmd.Parameters.AddRange(spArr);
object obj = cmd.ExecuteScalar();
return obj;
}
}
#endregion
#region [ QueryByProc (无参/有参) ]
/// <summary>
/// 根据存储过程,返回DataTable
/// </summary>
/// <param name="proc">proc</param>
/// <returns>DataTable</returns>
public static DataTable GetDataTableByProc(string proc)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = cmd.ExecuteDataTable();
return dt;
}
}
/// <summary>
/// 根据存储过程及参数,返回DataTable
/// </summary>
/// <returns>DataTable</returns>
public static DataTable GetDataTableByProc(string proc, params SqlParameter[] spArr)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(spArr);
DataTable dt = cmd.ExecuteDataTable();
return dt;
}
}
#endregion
#region [ Query (无参) ]
/// <summary>
/// 根据sql语句和参数,返回DataTable
/// </summary>
/// <param name="sql">sql语句</param>
/// <returns>DataTable</returns>
public static DataTable GetDataTableBySql(string sql)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
DataTable dt = cmd.ExecuteDataTable();
return dt;
}
}
/// <summary>
/// 根据sql语句,返回DataRow
/// </summary>
/// <param name="sql">sql语句</param>
/// <returns>DataRow</returns>
public static DataRow GetDataRowBySql(string sql)
{
DataTable dt = GetDataTableBySql(sql);
if (dt == null || dt.Rows.Count == 0)
return null;
return dt.Rows[0];
}
#endregion
#region [ Query (有参) ]
/// <summary>
/// 根据sql语句和参数,返回DataTable
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="spArr">可变参数</param>
/// <returns>DataTable</returns>
public static DataTable GetDataTableBySql(string sql, params SqlParameter[] spArr)
{
using (SqlConnection conn = GetConnection())
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout();
cmd.Parameters.AddRange(spArr);
DataTable dt = cmd.ExecuteDataTable();
return dt;
}
}
/// <summary>
/// 根据sql语句和参数,返回DataRow
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="spArr">可变参数</param>
/// <returns>DataRow</returns>
public static DataRow GetDataRowBySql(string sql, params SqlParameter[] spArr)
{
DataTable dt = GetDataTableBySql(sql, spArr);
if (dt == null || dt.Rows.Count==0)
return null;
return dt.Rows[0];
}
#endregion
}//end of class
}//end of namespace
微软SqlServerHelper
最新推荐文章于 2024-11-13 16:48:10 发布