SqlHelper这是个cs类文件,将经常使用到的数据库操作写到一个文件下,方便调用,以及减少代码量。使用这个文件的前提是要建立一个app.config文件,并且引用configuration程序集;其中app.config文件如下:
<configuration>
<connectionStrings>//配置字符串
//connectionString后面引号里面的是数据库连接字符串,起名为DBconnStr,在SqlHelper中将需要用到
<add name="DBconnStr" connectionString="Data Source=.; Initial Catalog=HRMSYS;User Id=hcrs; Password=******;"/>
</connectionStrings>
</configuration>
一下是SqlHelper.cs文件
using System;
using System.Collections.Generic;
using System.Configuration;//引用上边提到的配置文件
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
namespace HRMSys.DAL
{
static class SqlHelper
{
public static string ConnStr = ConfigurationManager.ConnectionStrings["DBconnStr"].ConnectionString;
//DBconnStr代表app.config文件中的的字符串,在此文件中定义一个变量存储DBconnStr字符串,在下文多处将使用到
public static int ExecuteNonQuary(string sql, params SqlParameter[] parameters)//新建方法,对其他文件传过来的sql语句和参数进行处理,
{
using (SqlConnection conn = new SqlConnection(ConnStr))//创建数据库连接
{
conn.Open();打开数据库
using (SqlCommand cmd =conn.CreateCommand())//数据库命令
{
cmd.CommandText = sql;//sql语句
cmd.Parameters.AddRange(parameters);//参数,可为空
return cmd.ExecuteNonQuery();//返回执行结果,ExecuteNonQuery()用于非查询语句,例如插入、删除
}
}
}
//执行多行多列操作,即类似表格;
public static DataTable ExecutDataTable(string sql, params SqlParameter[] parameters)
{
using(SqlConnection conn=new SqlConnection(ConnStr))
{
conn.Open();
using(SqlCommand cmd=conn.CreateCommand())
{
cmd.CommandText=sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapter adapter=new SqlDataAdapter(cmd);//将sql语句执行结果临时寄放在adapter中,
DataSet dataset=new DataSet();
adapter.Fill(dataset);//将adapter中的数据全部存放在dataset中
return dataset.Tables[0];//以表的形式返回此组操作的最终结果
}
}
}
public static object ExecuteScalar(string sql,
params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(ConnStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar();
}
}
}
//处理非空字段
//当数据库设置了可空字段时,的操作方式。数据库中可空字段的表示形式为null,但是在.net中不能直接把字符串"null"传进去,而应当使用DBnull.value;
//同时当从数据库中获取到的字段为空时,在.net下需要以DBnull来判断数据库传过来的是否null。代码如下:
public static object ToDbValue(object value)//传进数据库时的方法
{
if(value==null)
{
return DBNull.Value;
}
else
{
return value;
}
}
public static object FromDbValue(object value)//从数据库导出时的方法
{
if(value==DBNull.Value)
{
return null;
}
else
{
return value;
}
}
}
}