博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET基础操作回顾_使用ADO.NET操作SqlServer使用的类
阅读量:5061 次
发布时间:2019-06-12

本文共 4401 字,大约阅读时间需要 14 分钟。

    有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧。

          今天回顾一下ADO.NET用到的MS的基础类库,先上代码(标准的SqlServer操作)

          

1)一个基本的插入封装方法
using System;      using System.Collections;      using System.Text;

       using System.Data

     using System.Data.SqlClient;     
public static bool Add(Hashtable model)        {            StringBuilder strSql = new StringBuilder();            strSql.Append("insert into SysUser(");            strSql.Append("UserID,EffectiveTime)");            strSql.Append(" values (");            strSql.Append("@UserID@EffectiveTime)");            SqlParameter[] parameters = {
new SqlParameter("@UserID", SqlDbType.VarChar,50),new SqlParameter("@EffectiveTime", SqlDbType.VarChar,30)}; parameters[0].Value = model["UserID"]; parameters[1].Value = model["EffectiveTime"]; return SQLHelper.ExecuteNonQuery(ConnString, strSql.ToString(), parameters) > 0; }

        上面方法用到了四个基础类:Hashtable用来存放传入的参数(key/value 组合);StringBuilder用来拼接字符串;因为StringBuilder会预先分配存储空间,效率比string高;SqlParameter,向SqlCommand传递参数 ;string 在这样充当最终的SQL 字符串参数(由StringBuilder转化而来)。

2) 执行的方法 public static int ExecuteNonQuery(string connString, string cmdText, params SqlParameter[] cmdParms)        {            SqlCommand cmd = new SqlCommand();            using (SqlConnection conn = new SqlConnection(connString))            {                PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);                int val = cmd.ExecuteNonQuery();                cmd.Parameters.Clear();                return val;            }        }

    上面方法也用到了四个类:string(略过);SqlParameter,向SqlCommand传递参数 ;SqlCommand 类,对SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程(不能被继承);SqlConnection 类,表示到 SQL Server 数据库的打开连接(不能被继承)。

3)查询的方法     public static DataSet Adapter(string connString, string cmdText, params SqlParameter[] cmdParms)        {            SqlCommand cmd = new SqlCommand();            DataSet ds = new DataSet();            using (SqlConnection conn = new SqlConnection(connString))            {                PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);                SqlDataAdapter ada = new SqlDataAdapter(cmd);                ada.Fill(ds);                cmd.Parameters.Clear();                return ds;            }        }

    上面方法也用到了六个类:string(略过);SqlParameter,向SqlCommand传递参数 ;SqlCommand类,对SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程(不能被继承);SqlConnection 类,表示到 SQL Server 数据库的打开连接(不能被继承);DataSet,一个存放于内存中的数据缓存类;SqlDataAdapter,用于填充 DataSet 和更新 SQL Server 数据库的一组数据命令和一个数据库连接,一个DataSet中至少包含一个DataTable(一个内存中的数据表类)。.

4)事务的执行类
public static int ExecuteNonQuery(string connString, List
listCmdText, List
listCmdParms) { if (listCmdText.Count != listCmdParms.Count) { return -1; } int val = 0; SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connString)) { if (conn.State != ConnectionState.Open) { conn.Open(); } SqlTransaction trans = conn.BeginTransaction(); try { for (int i = 0; i < listCmdText.Count; i++) { PrepareCommand(cmd, conn, trans, CommandType.Text, listCmdText[i], listCmdParms[i]); val += cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } trans.Commit(); } catch(Exception ex) { trans.Rollback(); if (conn.State == ConnectionState.Open) { conn.Close(); } throw ex; } finally { if (conn.State == ConnectionState.Open) { conn.Close(); } } } return val; }

              上文未描述的类:SqlTransaction,在 SQL Server 数据库中生成的 Transact-SQL 事务的类(用于多条SQL执行);List,通过索引访问的对象的强类型列表。

             小结一下:

              1)拼接SQL字符串:会用的String、StringBuilder

              2)通用参数传递:List、HashTable

              3)专用类(链接其它数据库采用不同的近似类库):参数传递类,SqlParameter;数据库连接类,SqlConnection ;事务类,SqlTransaction;SqlCommand,命令执行类;SqlDataAdapter,命令执行和链接类。

转载于:https://www.cnblogs.com/hhhh2010/p/5256543.html

你可能感兴趣的文章
有标号DAG计数 [容斥原理 子集反演 组合数学 fft]
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
Python 中 创建类方法为什么要加self
查看>>
关于indexOf的使用
查看>>
【转】JS生成 UUID的四种方法
查看>>
英语单词
查看>>
centos6.8下安装matlab2009(图片转帖)
查看>>
Mongo自动备份
查看>>
求助大神!怎样批量删除数据库表中某个字段中同样的一段字符!
查看>>
VMWARE虚拟机无法访问的三种方法分析
查看>>
enq: SQ - contention
查看>>
cer证书签名验证
查看>>
ant 安装
查看>>
新手Python第一天(接触)
查看>>