C# SqlHelper应用开发学习

本文实例为大家分享了C# SqlHelper应用技巧,供大家参考,具体内容如下

使用App.config配置文件封装连接字符串,方便重复使用

--->添加App.conifg配置文件
--->Add : ConnectionString:
--->添加引用

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <startup> 
 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
 </startup>
 <connectionStrings>
 <add name="conStr" connectionString="Data Source=.;Initial Catalog=;User ID=;Password="/>
 </connectionStrings>
</configuration>

封装一个SQLHelper类方便使用

using System.Configuration;
using System.Data;//DatSet..Table SqlDataAdapter
using System.Data.SqlClient;//SqlConnection Command DataReader
namespace Common
{
 public class SqlHelper
 {
 //连接字符串
 //1、添加引用 2、导入命名空间 为了使用ConfigurationManager
 private static string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;

 //增删改查
 //查找数据 ExecuteScalar()返回首行首列 ExecuteReader() DataTable


 /// <summary>
 /// 返回DataTable
 /// </summary>
 /// <param name="sql">所用的sql语句</param>
 /// <param name="param">可变,可以传参也可以不传参数</param>
 /// <returns></returns>
 public static DataTable ExecuteDataTable(string sql, params SqlParameter[] param)
 {
 DataTable dt = new DataTable();
 using (SqlConnection con = new SqlConnection(conStr))
 {
 using (SqlDataAdapter adapter = new SqlDataAdapter(sql, con))
 { 
  //添加参数
  adapter.SelectCommand.Parameters.AddRange(param);
  //1.打开链接,如果连接没有打开,则它给你打开;如果打开,就算了
  //2.去执行sql语句,读取数据库
  //3.sqlDataReader,把读取到的数据填充到内存表中
  adapter.Fill(dt);
 }
 }
 return dt;
 }

 /// <summary>
 /// 执行查询,返回首行首列
 /// </summary>
 /// <param name="sql"></param>
 /// <param name="param"></param>
 /// <returns></returns>
 public static object ExecuteScalar(string sql, params SqlParameter[] param)
 {
 object o = null;
 using (SqlConnection con = new SqlConnection(conStr))
 {
 using (SqlCommand cmd = new SqlCommand(sql, con))
 {
  cmd.Parameters.AddRange(param);
  con.Open();

  o = cmd.ExecuteScalar();
 }
 }
 return o;
 }


 /// <summary>
 /// 执行查询,返回SqlDataReader对象
 /// </summary>
 /// <param name="sql"></param>
 /// <param name="param"></param>
 /// <returns></returns>
 public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] param)
 {
 SqlDataReader reader = null;
 using (SqlConnection con = new SqlConnection(conStr))
 {
 using (SqlCommand cmd = new SqlCommand(sql, con))
 {
  cmd.Parameters.AddRange(param);
  con.Open();

  reader = cmd.ExecuteReader();
 }
 }
 return reader;
 }

 /// <summary>
 /// 执行增删改,返回受影响的行数
 /// </summary>
 /// <param name="sql"></param>
 /// <param name="param"></param>
 /// <returns></returns>
 public static int ExecuteNonQuery(string sql, params SqlParameter[] param)
 {
 int n = -1;
 using (SqlConnection con = new SqlConnection(conStr))
 {
 using (SqlCommand cmd = new SqlCommand(sql, con))
 {
  cmd.Parameters.AddRange(param);
  con.Open();
  n = cmd.ExecuteNonQuery();
 }
 }
 return n;
 }

 }
}

C#using三种使用方法: https://www.nhooo.com/article/102855.htm

C#namespace: 是为了防止命名重复的 。
比如你在两个不同的命名空间中都可以有Student类。
此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。 

C#中Sqlparamater的用法:https://www.nhooo.com/article/101015.htm
下面这个是应用sqlHelper和ComboBox来展示 省市联动: 

 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 }

 private void Form1_Load(object sender, EventArgs e)
 {
 //在应用程序加载的时候 ,去数据库查找省的数据,给cboPro
 DataTable dt = SqlHelper.ExecuteDataTable("select * from promary");
 //将返回的DataTable作为cboPro的数据源
 //让cboPro显示proName这个字段的值,一般是显示给客户看的
 cboPro.DisplayMember = "proName";
 //让valueMemberID,绑定的是对应的值,绑定处理程序标识 给程序员看的。
 cboPro.ValueMember = "proID";
 cboPro.DataSource = dt;
 }

 private void cboPro_SelectedIndexChanged(object sender, EventArgs e)
 {
 //之前的写法
 // MessageBox.Show(cboPro.Text);//获得在cbo中选择文本
 //MessageBox.Show(cboPro.SelectedValue.ToString());//获得关联的数据

 //string sql = "select * from city where proID="+cboPro.SelectedValue.ToString();
 //带参数的sql语句
 string sql = "select * from city where proID=@proID";
 //准备一个sql参数
 SqlParameter p = new SqlParameter("@proID", cboPro.SelectedValue.ToString());
 //设置cboCity要显示的数据
 cboCity.DisplayMember = "cityName";
 //根据sql语句查询到的数据集
 cboCity.DataSource = SqlHelper.ExecuteDataTable(sql, p);
 }
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。