1.配置文件

   <connectionStrings>
<add name="constr" connectionString="Data Source=.;Initial Catalog=NovelDitle;Integrated Security=True"/>
</connectionStrings>

2.静态类 命名空间的引入等

这里我只写了主要要用到的命名空间

 using System.Configuration;
using System.Data;
using System.Data.SqlClient;

3.私有连接字符串 全局变量

//私有连接字符串
private static string conStr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

4.写静态方法

这里的三个参数分别指的是:sql语句 存储过程 可变参数(防sql注入)

①//离线查询 返回datatable

     public static DataTable ExecuteDataTable(string sql,CommandType cmdType, params SqlParameter[] par)
{
//datatable对象
DataTable dt = new DataTable(); //用于处理非托管对象。某些类型的非托管对象有数量限制或很消耗系统资源。为了及时释放资源,使用using语句可以确保这些资源适当地处置(dispose)
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
{
//存储过程赋值
adapter.SelectCommand.CommandType = cmdType;
//判断参数不为空 长度>0
if (par != null)
{
//向数组参数中添加值
adapter.SelectCommand.Parameters.AddRange(par);
}
//填充数据
adapter.Fill(dt);
return dt;//返回值
}
}

②//在线查询,返回SqlDataReader

  public static SqlDataReader ExecuteDataReader(string sql,CommandType cmdType, params SqlParameter[] par)
{
//SqlConnection要始终保持打开状态 不能使用using释放资源
SqlConnection conn = new SqlConnection(conStr); using (SqlCommand com = new SqlCommand(sql, conn))
{
//存储过程赋值
com.CommandType = cmdType; //判断参数不为空
if (par != null)
{
//传入参数
com.Parameters.AddRange(par);
}
try
{
//如果连接状态关闭
if (conn.State==ConnectionState.Closed)
{
//打开连接
conn.Open();
}
//返回结果 参数:当关闭reader时也关闭SqlConnection
return com.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception)
{
//关闭连接
conn.Close();
//释放资源
conn.Dispose();
throw;//抛出异常
}
}
}

③增删改操作

  public static int ExecuteNonQuery(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com=new SqlCommand(sql,conn))
{
com.CommandType = cmdType; if (par!=null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteNonQuery();
}
}
}

④返回单个值

  public static object ExecuteScalar(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com = new SqlCommand(sql, conn))
{
com.CommandType = cmdType; if (par != null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteScalar();
}
}
}

最新文章

  1. LinqToDB 源码分析——生成与执行SQL语句
  2. servlet/filter/listener/interceptor区别与联系
  3. AJAX避免服务器调用上个页面缓存的办法
  4. TortoiseSVN安装使用
  5. java 处理xml格式数据
  6. tostring格式化输出
  7. Java笔记1 : 在生产者消费者模式中,线程通信与共享数据,死锁问题与解决办法
  8. 洛谷 P1026 统计单词个数
  9. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
  10. SQL优化 总结 精简
  11. linux下vsftpd的安装及配置使用详细步骤
  12. vue-使用keep-alive优化网页性能
  13. 当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
  14. 排序算法之希尔排序的思想以及Java实现
  15. Gedit浏览器常用快捷键备注
  16. [NIO-4]选择器
  17. python 牛客网 你的输出为:空。请检查一下你的代码,有没有循环输入处理多个case。问题解决
  18. prvReadAsyncOperation
  19. linux配置虚拟主机
  20. vi 基础配置

热门文章

  1. 在Ubuntu Server 14.04上源码安装Odoo 9.0
  2. 【noip】跟着洛谷刷noip题
  3. Eclipse luna安装SVN
  4. JAVA--养成好的编程习惯
  5. vue项目及插件
  6. MyBatis 动态sql标签trim
  7. linux(centos) 下安装phpstudy 如何命令行进入mysql
  8. hack 记录
  9. addEventListener-第三个参数 useCapture
  10. java memory allocation(转)