今天在博客园开博,希望能够在这个开放的平台上学到更多,也希望自己能够经常抽出时间增加博客数量,在写博客的同时思考程序代码,思考编程思想,同时沉淀技术.
把我之前做三层Web开发的数据层访问代码拿出来讨论:大家可以在阅读代码后留下自己的看法。
首先是获得数据库连接对象,我采用的是sqlServer2005 数据库
1 privatestatic SqlConnection connection;
2 publicstatic SqlConnection Connection
3 {
4 get
5 {
6 string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
7 if (connection ==null)
8 {
9 connection =new SqlConnection(connectionString);
10 connection.Open();
11 }
12 elseif (connection.State == System.Data.ConnectionState.Closed)
13 {
14 connection.Open();
15 }
16 elseif (connection.State == System.Data.ConnectionState.Broken)
17 {
18 connection.Close();
19 connection.Open();
20 }
21 return connection;
22 }
23 }
2 publicstatic SqlConnection Connection
3 {
4 get
5 {
6 string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
7 if (connection ==null)
8 {
9 connection =new SqlConnection(connectionString);
10 connection.Open();
11 }
12 elseif (connection.State == System.Data.ConnectionState.Closed)
13 {
14 connection.Open();
15 }
16 elseif (connection.State == System.Data.ConnectionState.Broken)
17 {
18 connection.Close();
19 connection.Open();
20 }
21 return connection;
22 }
23 }
执行返回int的存储过程,我主要用于查询
代码
执行有输出参数的sql语句或存储过程,如果使用存储过程,添加操作的存储过程中使用select @id=@@identity,程序接收这个输出值来判断添加是否成功。
删除和更新操作中通过 select @@rowcount 获得行数如果是一来确定操作成功。
代码
执行sql语句或者存储过程获得dataReader
代码
执行有参存储过程,并返DataSet
代码
主要用于查询的方法
代码
///<summary>
/// 执行有参SQL语句或者存储过程,并返回执行行数 存储过程中用select @@表示
/// 0为存储过程 1为sql语句
///</summary>
///<param name="sql"></param>
///<param name="nType"></param>
///<param name="values"></param>
///<returns></returns>
publicstaticint GetScalar(string sql,int nType, params SqlParameter[] values)
{
SqlCommand cmd =new SqlCommand(sql, Connection);
if (nType ==0)
{
cmd.CommandType = CommandType.StoredProcedure;
}
if (nType ==1)
{
cmd.CommandType = CommandType.Text;
}
cmd.Parameters.AddRange(values);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}
/// 执行有参SQL语句或者存储过程,并返回执行行数 存储过程中用select @@表示
/// 0为存储过程 1为sql语句
///</summary>
///<param name="sql"></param>
///<param name="nType"></param>
///<param name="values"></param>
///<returns></returns>
publicstaticint GetScalar(string sql,int nType, params SqlParameter[] values)
{
SqlCommand cmd =new SqlCommand(sql, Connection);
if (nType ==0)
{
cmd.CommandType = CommandType.StoredProcedure;
}
if (nType ==1)
{
cmd.CommandType = CommandType.Text;
}
cmd.Parameters.AddRange(values);
int result = Convert.ToInt32(cmd.ExecuteScalar());
return result;
}