对数据库操作的封装--班级管理系统心得
在系统中对于数据库的操作是不可避免的,如果每一次操作都用sql来写,那要写死人的。因此将全部的对于数据库的操作封装成一个类,这样方便调用,而且是自己的代码更加的简洁
可以首先建立一个类文件,并引入头操作
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
然后就是建立一个命名空间,这样就只需要在每个要调用数据库操作 的页面引入这个命名空间就可以实现对对应函数的调用了
namespace DBConnection
{
public class DBLink
{
接着就是真正的数据库操作了,首先要创建一个SqlConnection对象,SqlConnection对象中的链接字符串可以写在web.config文件中
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conStr"].ToString());
在Web.config中文件中添加如下链接字符串
<configuration>
<appSettings>
<add key="conStr" value="Data Source=XIONG-PC;Initial Catalog=CMSObjects;User ID=sa;PassWord=1234"/>
</appSettings>
下面就是对数据库各种操作的封装了
代码
/// <summary>
/// 打开数据库连接
/// </summary>
private static SqlConnection OpenConn()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["conStr"].ToString());
try
{
//conn = new SqlConnection(connStr);
conn.Open();
}
catch { return null; }
return conn;
}
/// <summary>
/// 关闭数据库连接
/// </summary>
private static void CloseConn(SqlConnection conn)
{
if (conn != null)
{
conn.Close();
conn.Dispose();
}
}
/// <summary>
/// 获取数据
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回DataTable数据源</returns>
public static DataTable GetDataTable(string strSql)
{
SqlConnection conn = null;
DataTable dt = new DataTable();
try
{
conn = OpenConn();
SqlDataAdapter adapter = new SqlDataAdapter(strSql, conn);
adapter.Fill(dt);
}
catch { return null; }
finally
{
CloseConn(conn);
}
return dt;
}
/// <summary>
/// 获取DataSet数据源
/// </summary>
/// <param name="strSql">获取数据的SQL语句</param>
/// <returns>返回DataSet数据源</returns>
public static DataSet GetDataSet(string strSql)
{
SqlConnection conn = null;
DataSet ds = new DataSet();
try
{
conn = OpenConn();
SqlDataAdapter adapter = new SqlDataAdapter(strSql, conn);
adapter.Fill(ds);
}
catch { return null; }
finally
{
CloseConn(conn);
}
return ds;
}
/// <summary>
/// 获取新加的图片的信息
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回DataReader数据源(调用后手动关闭reader.Close();reader.Dispose())</returns>
public static DataTable Newphoto(string picName,string picUrl,string dirflg,string introduce)
{
DataTable dt = new DataTable();
string strCmd = " PROC_ADDITEM '" + picName + "','" + picUrl + "'," + dirflg + ",'" + introduce + "'";
return dt = DBLink.GetDataTable(strCmd);
}
/// <summary>
/// 获取数据
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回DataReader数据源(调用后手动关闭reader.Close();reader.Dispose())</returns>
public static SqlDataReader GetDataReader(string strSql)
{
SqlConnection conn = null;
SqlDataReader reader = null;
try
{
conn = OpenConn();
SqlCommand cmd = new SqlCommand(strSql, conn);
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch { return null; }
finally
{
//这里不能使用CloseConn(conn),因为它会关闭数据库连接,则reader也会关闭,无法使用。
//所以应该在调用的位置出关闭,即reader.Close();reader.Dispose();
//CommandBehavior.CloseConnection的作用是关闭DataReader时候,相应的Connection也会关闭
// CloseConn(conn);
}
return reader;
}
/// <summary>
/// 插入或更新数据
/// </summary>
/// <param name="strSql"></param>
/// <returns>返回收影响的记录数</returns>
public static int InsertOrUpdate(string strSql)
{
int ret = 0;
SqlConnection conn = null;
try
{
conn = OpenConn();
SqlCommand cmd = new SqlCommand(strSql, conn);
ret = cmd.ExecuteNonQuery();
}
catch { return -1; }
finally
{
CloseConn(conn);
}
return ret;
}