C# SqlHelper应用开发学习
作者:蒙小米 时间:2023-05-07 11:07:35
本文实例为大家分享了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.jb51.net/article/102855.htm
C#namespace: 是为了防止命名重复的 。
比如你在两个不同的命名空间中都可以有Student类。
此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。
C#中Sqlparamater的用法:https://www.jb51.net/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);
}
}
标签:C#,SqlHelper
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
在Spring中编写事务的介绍
2021-12-15 10:33:18
C#异步编程之async/await详解
2022-10-08 02:50:07
![](https://img.aspxhome.com/file/2023/7/85667_0s.png)
c# 控件截图的简单实例
2022-01-21 16:43:19
c#将list类型转换成DataTable方法示例
2023-06-27 12:02:08
第三方包jintellitype实现Java设置全局热键
2023-09-25 10:33:50
Java DecimalFormat 保留小数位及四舍五入的陷阱介绍
2023-11-09 04:49:33
JavaWeb实现文件上传下载功能实例详解
2023-05-08 19:43:51
![](https://img.aspxhome.com/file/2023/3/62633_0s.jpg)
带你入门Java的泛型
2023-06-08 02:48:24
flutter BottomAppBar实现不规则底部导航栏
2023-06-19 23:40:19
![](https://img.aspxhome.com/file/2023/6/130446_0s.gif)
java实现扫雷游戏入门程序
2023-04-24 16:20:40
![](https://img.aspxhome.com/file/2023/6/86786_0s.jpg)
Spring Boot + thymeleaf 实现文件上传下载功能
2022-05-22 03:56:13
![](https://img.aspxhome.com/file/2023/0/61680_0s.png)
JAVA IDEA 打开assert 设置方式
2022-08-19 13:48:49
![](https://img.aspxhome.com/file/2023/7/77137_0s.png)
一篇文章带你了解Java 中序列化与反序列化
2021-11-27 21:19:27
![](https://img.aspxhome.com/file/2023/8/80158_0s.png)
Android屏幕旋转之横屏竖屏切换的实现
2023-10-29 21:40:10
图文精讲java常见分布式事务理论与解决方案
2023-05-22 19:50:10
![](https://img.aspxhome.com/file/2023/3/75453_0s.png)
SpringMVC通过模型视图ModelAndView渲染视图的实现
2023-02-28 03:36:54
![](https://img.aspxhome.com/file/2023/8/119778_0s.png)
Java实现马踏棋盘算法
2023-03-05 04:30:46
![](https://img.aspxhome.com/file/2023/4/76254_0s.jpg)
Java(TM) Platform SE binary 打开jar文件的操作
2021-10-02 00:08:12
![](https://img.aspxhome.com/file/2023/4/62534_0s.jpg)
java图形界面之布局设计
2021-11-10 16:07:40
WinForm绘制圆角的方法
2023-06-21 14:23:51