using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SQLServerService
{
class SqlHelper
{
#region 连接
///
/// 连接字符串名,配置文件中的连接字符串名称
///
private const String ConnectionStringName = "SQLCon";
///
/// 连接字符串,其中包含源数据库名称和建立初始连接所需的其他参数。
///
private static String _ConnectionString;
///
/// 连接字符串,其中包含源数据库名称和建立初始连接所需的其他参数。
///
private static String ConnectionString
{
get
{
if (String.IsNullOrEmpty(_ConnectionString))
{
_ConnectionString = GetConnectionStringFromEnvironmentVariable();
if (String.IsNullOrEmpty(_ConnectionString))
{
ConnectionStringSettings connSettings = ConfigurationManager.ConnectionStrings[ConnectionStringName];
if (connSettings == null || String.IsNullOrEmpty(connSettings.ConnectionString))
throw new Exception("请确认连接字符串" + ConnectionStringName + "配置是否正确");
_ConnectionString = connSettings.ConnectionString;
}
}
return _ConnectionString;
}
}
///
/// 从环境变更配置的配置文件中获取连接字符串
///
/// 连接字符串,查询失败时返回null
private static String GetConnectionStringFromEnvironmentVariable()
{
String environmentVariableName = ConfigurationManager.AppSettings["连接字符串配置文件环境变量名"];
if (String.IsNullOrEmpty(environmentVariableName))
return null;
String configPath = System.Environment.GetEnvironmentVariable(environmentVariableName, EnvironmentVariableTarget.Machine);
if (String.IsNullOrEmpty(configPath))
return null;
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = configPath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
if (config.ConnectionStrings == null || !config.HasFile)
return null;
ConnectionStringSettings connSettings = config.ConnectionStrings.ConnectionStrings[ConnectionStringName];
if (connSettings == null)
return null;
if (String.IsNullOrEmpty(connSettings.ConnectionString))
return null;
return connSettings.ConnectionString;
}
#endregion
#region 获得参数对象
///
/// 获得参数对象
///
/// 参数名称
/// 数据类型
/// 参数实值
///
public static SqlParameter GetParameter(String paramName, DbType paramType, Object paramValue)
{
SqlParameter param = new SqlParameter(paramName, paramValue);
param.DbType = paramType;
return param;
}
///
/// 获得参数对象
///
/// 参数名称
/// 参数实值
///
public static SqlParameter GetParameter(string paramName, string paramValue)
{
SqlParameter param = new SqlParameter(paramName, paramValue);
return param;
}
#endregion
#region 执行SQL语句,返回执行行数
///
/// 执行SQL语句,返回执行行数
///
/// SQL语句
/// 参数对象数组
///
public static int ExecuteSql(String Sqlstr, SqlParameter[] param)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Sqlstr;
cmd.Parameters.AddRange(param);
conn.Open();
int i = cmd.ExecuteNonQuery();
conn.Close();
return i;
}
catch (Exception ex)
{
WriteLog.Write("ExecuteSql修改数据库出错:" + ex.ToString());
return 0;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
///
/// 执行SQL语句,返回执行行数
///
/// SQL语句
/// 参数对象数组
///
public static int ExecuteSql(String Sqlstr)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Sqlstr;
conn.Open();
int i = cmd.ExecuteNonQuery();
conn.Close();
return i;
}
catch (Exception ex)
{
WriteLog.Write("ExecuteSql修改数据库出错:" + ex.ToString());
return 0;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
#endregion
#region 执行SQL语句返回数据表
///
/// 执行SQL语句并返回数据表
///
/// SQL语句
///
public static DataTable ExecuteDt(String Sqlstr)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
try
{
SqlDataAdapter da = new SqlDataAdapter(Sqlstr, conn);
DataTable dt = new DataTable();
conn.Open();
da.Fill(dt);
conn.Close();
return dt;
}
catch (Exception ex)
{
WriteLog.Write("ExecuteDt查询数据库出错:" + ex.ToString());
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
///
/// 执行SQL语句并返回数据表
///
/// SQL语句
/// 参数对象列表
///
public static DataTable ExecuteDt(String Sqlstr, SqlParameter[] param)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
try
{
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand(Sqlstr, conn);
cmd.Connection = conn;
cmd.Parameters.AddRange(param);
da.SelectCommand = cmd;
conn.Open();
da.Fill(dt);
conn.Close();
return dt;
}
catch (Exception ex)
{
WriteLog.Write("ExecuteDt查询数据库出错:" + ex.ToString());
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}
}
#endregion
///
/// 批量执行SQL语句
///
/// SQL语句数组
/// SQL参数对象数组
///
public static Int32 ExecuteSqls(String[] Sqlstr, List param)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
SqlCommand cmd = new SqlCommand();
SqlTransaction tran = null;
cmd.Transaction = tran;
try
{
conn.Open();
tran = conn.BeginTransaction();
cmd.Connection = conn;
cmd.Transaction = tran;
Int32 count = Sqlstr.Length;
for (Int32 i = 0; i < count; i++)
{
cmd.CommandText = Sqlstr[i];
cmd.Parameters.AddRange(param[i]);
cmd.ExecuteNonQuery();
}
tran.Commit();
return 1;
}
catch
{
tran.Rollback();
return 0;
}
finally
{
cmd.Dispose();
conn.Close();
}
}
}
}
}
调用:
///
/// 用户管理信息查询
///
///
public DataTable Userlist(string username)
{
StringBuilder sqlSB = new StringBuilder();
sqlSB.Append("select a.ID,a.USERNAME,a.CJSJ,a.E_MAIL,a.PHONENUMBER,b.ROLE_NAME from OIL_USER a left join OIL_ROLE b on a.ROLE = b.id");
sqlSB.Append(" Order by a.CJSJ desc");
return SqlHelper.ExecuteDt(sqlSB.ToString());
}
///
/// 新建用户
///
/// roless为角色ID
/// 用户对象
public int CreatAddUser(UserListVo userlist)
{
StringBuilder sqlSB = new StringBuilder();
sqlSB.Append("insert into OIL_USER(id,USERNAME,\"PASSWORD\",CJSJ,\"ROLE\",E_MAIL,PHONENUMBER) values(@id,@username,@passwords,@usertime,@roless,@email,@PHONENUMBER)");
SqlParameter[] pa ={
SqlHelper.GetParameter("@id", DbType.String, Guid.NewGuid().ToString()),
SqlHelper.GetParameter("@username", DbType.String, userlist.UserName),
SqlHelper.GetParameter("@passwords", DbType.String, userlist.Password),
SqlHelper.GetParameter("@usertime", DbType.DateTime, userlist.CJSZ),
SqlHelper.GetParameter("@roless", DbType.String, userlist.ROLE),
SqlHelper.GetParameter("@email", DbType.String, userlist.E_MAIL),
SqlHelper.GetParameter("@PHONENUMBER", DbType.String, userlist.PHONENUMBER),
};
return SqlHelper.ExecuteSql(sqlSB.ToString(), pa);
}