对数据库操作的封装--班级管理系统心得

        在系统中对于数据库的操作是不可避免的,如果每一次操作都用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;
}

 

 

posted @ 2011-01-15 09:44  shawnXiao  Views(513)  Comments(0Edit  收藏  举报