读书人

C#怎么连接数据库

发布时间: 2012-04-23 13:17:38 作者: rapoo

C#如何连接数据库
我写的连接数据库的方法是这样的:

C# code
using System;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{    public class CommonConn    {        private SqlConnection con;        public CommonConn()        {            //             // TODO: 在此处添加构造函数逻辑             //         }        #region 建立数据库连接        public void OpenConn(string conn)        {            if (con == null)            {                con = new SqlConnection(conn);                con.Open();            }        }        #endregion        #region 关闭连接        public void CloseConn(string conn)        {            if (con != null)            {                con.Close();            }        }        #endregion        #region 释放连接        public void DisposeConn()        {            if (con != null)            {                con.Dispose();                con = null;            }        }        #endregion        #region 返回一个数据集        public DataSet SqlDataSet(string conn, string Sql, string tableName)        {            OpenConn(conn);            SqlDataAdapter da;            DataSet ds = new DataSet();            da = new SqlDataAdapter(Sql, con);            da.Fill(ds, tableName);            CloseConn(conn);            return ds;        }        #endregion        #region 执行一个SQL操作:添加、删除、更新操作        public void SqlExcute(string conn, string sql)        {            OpenConn(conn);            SqlCommand cmd;            cmd = new SqlCommand(sql, con);            cmd.ExecuteNonQuery();            cmd.Dispose();            CloseConn(conn);        }        #endregion        #region 执行一个SQL操作:添加、删除、更新操作,返回受影响的行        public int SqlExecuteNonQuery(string conn, string sql)        {            OpenConn(conn);            SqlCommand cmd;            cmd = new SqlCommand(sql, con);            int flag = cmd.ExecuteNonQuery();            CloseConn(conn);            return flag;        }        #endregion        #region 返回一个对象        public object SqlExecuteScalar(string conn, string sql)        {            OpenConn(conn);            SqlCommand cmd;            cmd = new SqlCommand(sql, con);            object obj = cmd.ExecuteScalar();            cmd.Dispose();            CloseConn(conn);            return obj;        }        #endregion        #region 返回DataTable        public DataTable SqlDataTable(string conn, string sql)        {            OpenConn(conn);            DataSet ds = new DataSet();            SqlDataAdapter da = new SqlDataAdapter(sql, con);            da.Fill(ds, "table");            CloseConn(conn);            return ds.Tables["table"];        }        #endregion        #region 返回一个数据集的记录数        public int SqlRecordCount(string conn, string sql)        {            //注:Sql 语句必须是一个统计查询             OpenConn(conn);            SqlCommand cmd = new SqlCommand();            cmd.CommandText = sql;            cmd.Connection = con;            SqlDataReader dr;            dr = cmd.ExecuteReader();            int RecordCount = -1;            while (dr.Read())            {                RecordCount = int.Parse(dr[0].ToString());            }            CloseConn(conn);            return RecordCount;        }        #endregion    }}


在数据库连接查询非常频繁的情况下(高访问量),这样写有什么问题吗,需不需要加上static,加上会有什么问题?
请给一些优化建议,谢谢



[解决办法]
你的代码没有考虑异常的情况,数据库连接可能没有及时关闭。
还有每个操作的开头都是OpenConn(conn);
那么就多次打开连接了,这是不对的,至少应该在OpenConn方法内判断一下SqlConnection的状态吧,如果是Closed才打开连接。
[解决办法]
用linq吧
[解决办法]
探讨

用linq吧

读书人网 >C#

热点推荐