SqlHelper的具体写法

1,使用C#进行连接数据库操作时一般会用到SqlHelper

这个封装的类我刚开始自己学习的时候,连接数据库总是一坨代码,不仅难看,而且不好改。

看了有关传智的一些资料后,我慢慢改正了自己一些些代码的缺点,现在我就来说一下有关SqlHelper的具体封装。

2.SqlHelper的具体封装

因为一般SqlHelper会在整个项目中使用,所以一般会把它写成静态类。

(1)执行insert/delete/update的方法

public static int ExecuteNonQuery(string sql,CommandType type,params SqlParamter[] para)
{}
这个方法有3个参数,分别是sql(所需的sql语句),type(选择是普通的SQL语句还是存储过程),para(这个是传入的多个可变参数)

返回值是int类型,返回影响的行数

using(SqlConnection conn=new SqlConnection(connStr))
{
using(SqlCommand cmd=new SqlCommand(sql,conn))
{
//再下一步写里面的内容
}}
这是方法里面的内容

这里用到了SqlConnection和SqlCommand,分别是数据连接函数和数据命令函数

前者是用于连接数据库,传入的参数connStr就是连接字符串

后者用于使用Sql语句对数据库的数据进行处理

using的作用是到结束时释放资源,就相当于Dispose和Close

{
cmd.CommandType=type;
if(para!=null)
{cmd.Paramter.AddRange(para);
}
conn.Open();
return cmd.ExecuteNonQuery();
}
这时写在SqlCommand里面的内容

要先判断传入的可变参数是否为空,不为空就将传入的参数加到Sql语句中

在这里要注意,conn越晚打开越好,一般是在执行查询函数之前打开。

最后返回 执行的查询函数得到的结果(也就是影响的行数)

(2)执行返回单个值得方法

因为与前一个方法基本一样,就直接贴代码了

 public static object ExecuteScalar(string sql, CommandType type, params SqlParameter[] para){using (SqlConnection conn = new SqlConnection(connStr)){using (SqlCommand cmd = new SqlCommand(sql, conn)){cmd.CommandType = type;if (para != null){cmd.Parameters.AddRange(para);}conn.Open();return cmd.ExecuteScalar();}}}

(3)返回SqlDataReader的方法

  public static SqlDataReader ExecuteScalar(string sql, CommandType type, params SqlParameter[] para){SqlConnection conn = new SqlConnection(connStr);            using (SqlCommand cmd = new SqlCommand(sql, conn)){cmd.CommandType = type;if (para != null){cmd.Parameters.AddRange(para);}try{conn.Open();return cmd.ExecuteReader(CommandBehacior.CloseConnection);}catch{conn.Close();conn.Dispose();throw;}}            }

这里只说一下不同的地方,

为什么SqlConnection没有使用using?

因为如果使用返回的Reader对象的话,SqlConnection就必须保持打开

而using在结束时就释放资源了。

为什么使用try。。。catch?

因为如果直接返回Reader对象的话,SqlConnection对象一直保持打开状态,

无法将其关闭。

CommandBehacior.CloseConnection
的作用就是在Reader对象使用完后,关闭SqlConnection,


(4)返回DataTable对象

public static DataTable ExecuteDataTable(string sql, CommandType type, params SqlParameter[] para){DataTable dt = new DataTable();using (SqlDataAdapter adapter=new SqlDataAdapter(sql,connStr)){adapter.SelectCommand.CommandType = type;if (para != null) {adapter.SelectCommand.Parameters.AddRange(para);}adapter.Fill(dt);return dt;}}

不用打开连接,SqlDataAdapter内部会自动打开

adapter的Fill方法是将数据从内存中读到DataTable


3.有关连接字符串的小知识

它的作用就是打开数据库的一把钥匙!

一般将它定义在App.config中

写法一般有两种:

(1)Data Source=(local);Initial Catalog=这里写数据库名称;Integrated Security=true;

这种方法是连接window登陆的钥匙

(2)Data Source=(local);Initial Catalog=这里写数据库名称;User ID=这里写用户名;Password=这里写密码

这种方法是连接Sql Server身份验证的钥匙.






本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部