问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c#sqlhelper类怎么用

发布网友 发布时间:2022-04-29 19:36

我来回答

5个回答

懂视网 时间:2022-04-29 23:57

1.    封装方法的原则

    把不变的代码写入方法中,把变化的部分通过参数传递

      不变的代码:连接数据、执行数据库操作的方法等

      变化的部分:SQL语句,进行参数化查询的时候需要传递的参数

2.    实现SQLHelper类

 1 //不声明为publc的目的:这个类只在程序集当中使用,不必对外。
 2 //尽可能地对外少暴露publc类
 3 class SQLHelper
 4  {
 5  //连接数据库的字符串
 6  private static string strConn = ConfigurationManager.ConnectionStrings["dbconStr"].ConnectionString;
 7 
 8  /// <summary>
 9  /// 执行非查询sql语句,如insert、delete、update
 10  /// </summary>
 11  /// <param name="sqlCmd">要执行的sql语句</param>
 12  /// <param name="parameters">sql语句中的参数</param>
 13  /// <returns>执行语句后,受到影响的行数</returns>
 14  public static int ExecuteNoQuery(string sqlCmd, params SqlParameter[] parameters) 
 15  {
 16  using (SqlConnection conn = new SqlConnection(strConn))
 17   {
 18   conn.Open();
 19   using (SqlCommand cmd = conn.CreateCommand()) 
 20   {
 21   cmd.CommandText = sqlCmd;
 22    cmd.Parameters.AddRange(parameters);
 23   return cmd.ExecuteNonQuery();   
 24   }
 25   }
 26  }
 27 
 28  /// <summary>
 29  /// 一般用于返回一个数据的查询数据,如查询一个学生的数学成绩
 30  /// </summary>
 31  /// <param name="sqlCmd">要执行的sql语句</param>
 32  /// <param name="parameters">sql语句中的参数</param>
 33  /// <returns>查询结果,object类型</returns>
 34  public static object ExecuteScalar(string sqlCmd, params SqlParameter[] parameters) 
 35  {
 36  using (SqlConnection conn = new SqlConnection(strConn)) 
 37   {
 38   conn.Open();
 39   using (SqlCommand cmd = conn.CreateCommand()) 
 40   {
 41   cmd.CommandText = sqlCmd;
 42    cmd.Parameters.AddRange(parameters);
 43   return cmd.ExecuteScalar();
 44   }
 45   }
 46  }
 47 
 48  /// <summary>
 49  /// 将查询结果以DataSet的形式返回
 50  /// </summary>
 51  /// <param name="sqlCmd">要执行的sql语句</param>
 52  /// <param name="parameters">sql语句中的参数</param>
 53  /// <returns>数据集合,DataSet类型</returns>
 54  public static DataSet ExecuteDataSet(string sqlCmd, params SqlCommand[] parameters) 
 55  {
 56  using (SqlConnection conn = new SqlConnection(strConn)) 
 57   {
 58   conn.Open();
 59   using (SqlCommand cmd = conn.CreateCommand()) 
 60   {
 61   cmd.CommandText = sqlCmd;
 62    cmd.Parameters.AddRange(parameters);
 63   SqlDataAdapter adpter = new SqlDataAdapter(cmd);
 64   DataSet dataset = new DataSet();
 65    adpter.Fill(dataset);
 66   return dataset;
 67   }
 68   }
 69  }
 70 
 71  /// <summary>
 72  /// 执行查询结果数据量较大的查询语句,如查询1000个学生的信息
 73  /// </summary>
 74  /// <param name="sqlCmd">要执行的sql语句</param>
 75  /// <param name="parameters">sql语句中的参数</param>
 76  /// <returns>一个Staff类型的List</returns>
 77  public static List<Staff> ExecuteReader(string sqlCmd, params SqlParameter[] parameters) 
 78  {
 79  using (SqlConnection conn = new SqlConnection(strConn)) 
 80   {
 81   conn.Open();
 82   using (SqlCommand cmd = conn.CreateCommand()) 
 83   {
 84   cmd.CommandText = sqlCmd;
 85    cmd.Parameters.AddRange(parameters);
 86 
 87   SqlDataReader reader = cmd.ExecuteReader();
 88   List<Staff> lStaff = new List<Staff>();
 89   while (reader.Read())
 90    {
 91    lStaff.Add(new Staff()
 92    {
 93    Name = (string)reader["Name"],
 94    Age = (int)reader["Age"],
 95    Sex = (bool)reader["Sex"],
 96    Height = (decimal)reader["Height"],
 97    Salary = (decimal)reader["Salary"],
 98    //数据库中有些数据可以为空,如果使用强制转换的话,会出现错误
 99    //应该使用as来转换
100    Department = reader["Department"] as string
101    });
102    }
103   return lStaff;
104   }
105   }
106  }
107 }

3.    调用SQLHelper类

  string sqlCmd = "insert into t_staff(Name,Age,Sex,Height,Salary) values(‘郑冰‘,27,1,1.64,3000)";
  SQLHelper.ExecuteNoQuery(sqlCmd);
  string sqlCmd = "select Salary from t_staff where id > 2";
  DataSet dataset = SQLHelper.ExecuteDataSet(sqlCmd);
  DataTable table = dataset.Tables[0]; 
  foreach(DataRow row in table.Rows)
  {
  MessageBox.Show(row[0].ToString() + " == " + row["Salary"].ToString());
  }
  string sqlCmd = "select Salary from t_staff where Name = @value";
  object salary = SQLHelper.ExecuteScalar(sqlCmd, new SqlParameter("@value", "马金"));
  MessageBox.Show(salary.ToString());
  string sqlCmd = "select * from t_staff";
  List<Staff> lStaff = SQLHelper.ExecuteReader(sqlCmd);

 

SQLHelper

标签:

热心网友 时间:2022-04-29 21:05

假设从其他地方获得了一个SQLHelper类,先添加到项目里,然后步骤大致如下:

修改SQLHelper类命名空间,要与项目里其他类的命名空间一致。

假设SQLHelper类里有个静态方法Test(),要调用时就在外部这么写SqlHelper.Test();

SQLHelper通常是封装的对数据库操作的帮助类,根据编写者习惯不同,代码和使用也有些不一样。

热心网友 时间:2022-04-29 22:23

c#基础学好没

热心网友 时间:2022-04-29 23:58

引用命名空间 调用里面的方法喽。

热心网友 时间:2022-04-30 01:49

直接调用里面的方法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人字梯有什么安全隐患吗 怎样激发青春期孩子的内驱力 如何激发青春期孩子的内驱力 ...小题1:移船相近邀相见,添酒回灯重开宴。 , &amp;n... L1和L2串联 电压表并联在L1两端 当L1断路后 电压表测的为什么就成了电源... L1和L2串联,用电压表测L1两端的电压,L2不亮时,电流表为什么测的是电源电... 电路上传连两个灯泡L1与L2电压表测L1电压,当L1短路与断路时电压表情况... 对方拖着不办离婚手续该怎么办 计算机一级电子表格怎么拿分 如何配置思源黑体为latex中文字体? 思源黑体字体怎么安装 不锈钢可以在数控滚花吗? 为什么第一次用京东收货地址是别人的? 老公手机京东有他自己的收货地址也有别人的收货地址正常吗? 滚花刀滚花的原理是什么? 为什么注册京东里面有别人的地址东西被签收东西还能要回来吗? 我第一次在京东上买东西但是京东上的地址是人家的地址货发过去了在人家签收了_百度问一问 滚一件直径200mm,网纹刀1mm,求车床转速和进给量 我在京东购买的手机里面为什么有别人的收货地址? 我第一次在新手机京东上买东西,居然显示别人的收货地址和别人名字,手机是别人用过的吗?_百度问一问 网纹滚花刀有啥使用技巧? 宁波博物馆的观后感 怎样在抖音中找一个视频? 电脑下方的显示桌面的图标没了,要怎样重新设置呀? 电脑显示屏下面的小图标没有了,如何设置?使它存在不丢失? 网上找了一篇论文怎样改降低重复率 Robert Yau是华裔吗 如何降低论文重复率 魔方四阶整体法教程 四阶魔方32223怎么观察 基金牛市,熊市和加仓,持仓分别是什么意思 为什么京东里面本人都没写地址和名字就写了别人的地址和名字呢? 网纹0.3P=0.942什么意思 京东商城的个人信息收货地址是别人的,是不是盗号了?会不会绑定的银 我的京东账号有很多不知道谁的收货地址,还有很多的购物消息怎么办 直纹滚花刀要怎么使用? 京东购物地址泄露有人乱寄东西给我,前几天收到一份信封,里面没什么,只有一张破报纸,怎么办??? 我在京东购买的手机里面为什么有别人的收货地址 在家做电商怎么办理营业执照 APP和智能硬件的数据交互方式有哪些 相对于PC端,移动APP的交互特点有哪些 把手机app上的聊天功能怎么对接给智能聊天机器人 免污洗衣机什么品牌好? 有人用过盛怀宣的艾草贴吗?感觉怎么样? 环球娃娃阿波罗智能座椅都有哪些黑科技? 免污式波轮洗衣机是啥?谁能简单的解释一下,不懂。 质量好的免污洗衣机有哪些? 正品懒人顽固胖减肥艾草祛湿气瘦肚子肚腩瘦身大粗腿腰学生男女会不会有副作用? TCL免污式洗衣机真的免污吗? 数据堂智能语音交互应用场景都有哪些? 免污洗衣机用什么?