C#中的数据库访问类DBHelper
1、在配置文件中添加连接字符串
首先在配置文件中的<configuration>中加入数据库连接字符串,配置文件后缀为.config,例如:App.config
<connectionStrings>
<add name="你给此条链接起的名字,随便起,访问的时候可以用。比如:AAA" connectionString="Data Source=你的服务器地址;Initial Catalog=你要连接的数据库名字;Persist Security Info=True;User ID=数据库用户名;Password=数据库密码" providerName="System.Data.SqlClient" />
</connectionStrings>
2、新建一个帮助类
如果你只有一个类库,那就直接在你的类库新建一个类,名为“DBHelper”(随意起),如果你用三层,那就还有一个BLL业务逻辑层和一个DAL数据访问层,把DBHelper类放在DAL数据访问层中.
3、在帮助类中添加代码
1、定义一个变量获取配置文件中的数据库连接字符串
string connstr= ConfigurationManager.ConnectionStrings["你刚刚自定义的AAA"].ConnectionString.ToString();
2、开始写你需要的方法,举例两个最基本的最常用的
//执行增、删、改的方法:ExecuteNonQuery,返回受影响的行数
public int ExecuteNonQuery(string sql, params SqlParameter[] pms)
{
using (SqlConnection conn = new SqlConnection(connstr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
conn.Open();
return cmd.ExecuteNonQuery();
}
}
}
//将查出的数据装到table里,返回一个DataTable
public DataTable GetDatatableData(string sql, params SqlParameter[] pms)
{
DataTable dt = new DataTable();
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, connstr))
{
if (pms != null)
{
adapter.SelectCommand.Parameters.AddRange(pms);
}
adapter.Fill(dt);
}
return dt;
}
做一个讲解,params SqlParameter[] pms是用来接收SqlParameter传来的参数的,也可以只传一个sql语句,也可以参数化,建议是参数化防止被SQL注入
4、调用方法
//首先实例化DBHelper
DBHelper dbhelper = new DBHelper();
//定义一个查询的方法
public void GetStuName()
{
string stuid = "12345";//可以是从别的地方获取到的id
//定义SQL语句,这里用SqlParameter参数化防止sql注入,比较安全
//注意:使用SqlParameter需要using System.Data.SqlClient;
string sql = "select StuId,StuName,StuSex,StuAge from Student where StuId =@ID";
SqlParameter[] ps =
{
new SqlParameter("@ID",stuid)
};
//定义一个DataTable用来存放查出来的结果,这里调用DBHelper里的GetDatatableData方法
DataTable dt = dbhelper.GetDatatableData(sql, ps);
//如果你有数据控件可以直接将控件的数据源指定为这个dt,这样数据就会直接在控件中显示
//也可以取出dt中的某个值显示在页面上,比如这里我取出第一行数据对应的学生的性别
string AnyoneSex = dt.Rows[0]["StuSex"].ToString();
//输出弹窗显示第一行数据对应的学生的性别,也可以放到页面上
MessageBox.Show(AnyoneSex);
}
//定义一个增删改的方法,都是返回受影响的行数,所以通用,这里用添加数据
public void InsertData()
{
string name = "张三";
string sex = "男";
string age = "18";
string sql = "insert into Student(StuName,StuSex,StuAge) values(@StuName,@StuSex,@StuAge)";
SqlParameter[] ps =
{
new SqlParameter("@StuName",name),
new SqlParameter("@StuName",sex),
new SqlParameter("@StuName",age)
};
//然后传到dbhelper中的ExecuteNonQuery,定义一个int类型的变量用来接收返回的受影响的行数
int num = dbhelper.ExecuteNonQuery(sql, ps);
//数据有变化则说明插入成功
if (num > 0)
{
MessageBox.Show("插入成功");
}
}
转载请注明出处,谢谢