using System.Data.SqlClient;
using System.Configuration;
引用:System.Configuration
连接字符串放到配置文件中

新建一个类,写如下些方法,进行数据的操作

// ExecuteNonQuery 构建
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
{
string Str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(Str))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter par in parameters)
{
cmd.Parameters.Add(par);
}
return cmd.ExecuteNonQuery();
}
} } // ExecuteNonQuery 方法的使用
private void button1_Click(object sender, EventArgs e) //单击事件
{
try
{
SQLHelper.ExecuteNonQuery("insert into T_Age(Name,Age) values(@N,@A)", new SqlParameter("@N", txtLogin.Text.Trim()), new SqlParameter("@A", txtAge.Text.Trim()));
MessageBox.Show("插入成功!");
}
catch (Exception ex)
{
MessageBox.Show(string.Format("插入失败!:{0}", ex));
return;
}
} //-----------------------------------------------------------------------------
// ExecuteScalar 构建
public static object ExeccuteScalar(string sql, params SqlParameter[] parameters)
{
string Str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(Str))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
foreach (SqlParameter par in parameters)
{
cmd.Parameters.Add(par);
}
return cmd.ExecuteScalar();
}
} // ExecuteScalar 方法的使用
private void button2_Click(object sender, EventArgs e) //单击事件
{
int i = Convert.ToInt32(SQLHelper.ExeccuteScalar("select count(*) T_phone"));
MessageBox.Show(Convert.ToString(i));
}
//----------------------------------------------------------------------------- // ExecuteReader 构造 // 不能使用 using
public static SqlDataReader SqlDataReader(string sql, params SqlParameter[] parameters)
{
string Str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
SqlConnection conn = new SqlConnection(Str);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
foreach (SqlParameter par in parameters)
{
cmd.Parameters.Add(par);
}
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return dr;
} // ExecuteReader 方法的使用
private void button4_Click(object sender, EventArgs e) //单击事件
{
SqlDataReader dr = SQLHelper.SqlDataReader_using("select * from T_Age");
while (dr.Read())
{
MessageBox.Show(Convert.ToString(dr["Name"])); //读取Name字段的值
}
} //-----------------------------------------------------------------------------
// ExecuteDataSet 的构建
public static DataTable ExecuteDataSet(string sql, params SqlParameter[] SqlParmeter)
{
string Str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(Str))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
foreach (SqlParameter par in SqlParmeter) //遍历增加 SqlParmeter 参数
{
cmd.Parameters.Add(par);
}
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);
return dataset.Tables[];
}
} // ExecuteDataSet 方法的使用
private void button5_Click(object sender, EventArgs e)
{
DataTable dt = SQLHelper.ExecuteDataSet("select * from T_Age");
for (int i = ; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
string name =Convert.ToString(row["Name"]);
MessageBox.Show(name);
}
} //-----------------------------------------------------------------------------
注意:SqlDataReader如果用 using 的话,将执行不了,因为在读取数据的时候是在using以外,无法读取
如下是错误的代码 public static SqlDataReader ExecuteReader_using(string sql, params SqlParameter[] parameters)
{
string Str = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(Str))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
foreach (SqlParameter par in parameters)
{
cmd.Parameters.Add(par);
}
return cmd.ExecuteReader();
}
}
//-----------------------------------------------------------------------------

【ADO.NET】6、SQLHelper简单封装的更多相关文章

  1. ADO简单封装(MFC)

    简单封装了一下,不是很严谨. /************************************************************************/ /* INSTRUC ...

  2. .net core 中简单封装Dapper.Extensions 并使用sqlsuger自动生成实体类

    引言 由公司需要使用dapper  同时支持多数据库 又需要支持实体类 又需要支持sql 还需要支持事务 所以采用了 dapper + dapperExtensions  并配套 生成实体类小工具的方 ...

  3. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  4. FMDB简单封装和使用

    工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...

  5. Android--Retrofit+RxJava的简单封装(三)

    1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...

  6. okhttp3 get post 简单封装

    最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...

  7. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  8. 对pymysql的简单封装

    #coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...

  9. iOS开发——UI篇OC篇&UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

随机推荐

  1. 小波变换和motion信号处理(二)(转)

    写的太好,这是第二篇:http://www.kunli.info/2011/02/18/fourier-wavelet-motion-signal-2/ 这是<小波变换和motion信号处理&g ...

  2. 配置 Web Deploy 的步骤 -摘自网络

    今天的文章里,我会介绍Microsoft Web Deploy—一个采用全面的发布和部署机制的免费服务器技术.Web Deploy不仅仅让你发布文件—还可以部署数据库结构/数据,运行变更的数据库脚本, ...

  3. Tomcat内存溢出的原因

    在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存原因是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种情况: 1.OutOfMem ...

  4. 使用 IntelliJ IDEA 导入 Spark 最新源码及编译 Spark 源代码

    前言   其实啊,无论你是初学者还是具备了有一定spark编程经验,都需要对spark源码足够重视起来. 本人,肺腑之己见,想要成为大数据的大牛和顶尖专家,多结合源码和操练编程. 准备工作 1.sca ...

  5. 国外一些好用的UX/UI设计工具和资源分享

    国外一些好用的UX/UI设计工具和资源分享 你今天使用的设计工具也许不再适合以后的网页和APP设计项目了.新的工具不断的推出市场,目标只有一个,让你的工作更快.更容易而且工作成效更好.今天分享的这些U ...

  6. IOS GCD 使用(三)单例模式

    一  Dispatch_once函数简介      使用dispatch_once提价的代码块,即便你提交多次,只能执行一次.    void dispatch_once(dispatch_once_ ...

  7. android 文件读取(assets、raw)

    需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作. assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. ...

  8. 用mac自带的safari浏览器下载excel文件后面自带了.exe后缀

    将 Content-Type 设为 application/vnd.ms-excel

  9. [GIF] GIF Loop Coder - Interpolation

    This video discusses the default interpolation in GIF Loop Coder, and four distinct ways to change t ...

  10. C# dynamic关键字的使用方法

    dynamic和var的区别:1.var声明一个局部变量只是一种简化语法,它要求编译器根据一个表达式推断具体的数据类型.2.var只能用于声明方法内部的局部变量,而dynamic可用于局部变量,字段, ...