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

今天回顾一下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,),new SqlParameter("@EffectiveTime", SqlDbType.VarChar,)};
parameters[0].Value = model["UserID"];
parameters[1].Value = model["EffectiveTime"]; return SQLHelper.ExecuteNonQuery(ConnString, strSql.ToString(), parameters) > ;
}

上面方法用到了四个基础类: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<string> listCmdText, List<SqlParameter[]> listCmdParms)
{
if (listCmdText.Count != listCmdParms.Count)
{
return -;
}
int val = ;
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 = ; 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,命令执行和链接类。

.NET基础操作回顾_使用ADO.NET操作SqlServer使用的类的更多相关文章

  1. Java基础回顾_第二部分_Java流程控制

    Java基础回顾_第二部分 Java流程控制 Scanner对象(扫描器,捕获输入) import java.util.Scanner; public class Demo01 { public st ...

  2. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  3. 巩固复习(Django最基础的部分_具体查看官方文档)

    Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...

  4. C#基础知识回顾--线程传参

    C#基础知识回顾--线程传参 在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数,ThreadStart委托接收的函数不能有参数, 也不能有返回值.如果希望传递参数给执行函数, ...

  5. VC与ADO数据库操作

    VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...

  6. JavaWeb开发技术基础概念回顾篇

    JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...

  7. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  8. Asp.Net Core 2.0 项目实战(4)ADO.NET操作数据库封装、 EF Core操作及实例

    Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Ne ...

  9. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

随机推荐

  1. selenium+python自动化之元素定位

    自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...

  2. Jfinal中log4j的配置

    基本不用配置: 1.web.xml不用配置: 2.添加文件log4j.properties到src下面: 3.lib中复制log4j的jar包进去: 4.可以使用了; package demo; im ...

  3. adb uninstall/pull/push 命令的使用总结

    uninstall的使用 adb uninstall package_name 卸载软件adb -k uninstall package_name 完全删除,包括data/data文件夹也删掉. pu ...

  4. jenkins:应用篇(Gatling plugin的使用)

    Jenkins的功能强大,在于它的插件式框架,能扩展功能,自动化当中,很容易想到的是对提交的新代码做测试,这里gatling主要是负责压力测试,也就是所谓的性能.关于gatling,可以参考我前面的博 ...

  5. C#与JAVA平台RSA算法交互示例

    很久以前的文章中,演示了如何对于.net和win32下面的delphi的RSA互操作性的实现,对于C#和JAVA之前的RSA加密解密也是很简单的,一般都采用了标准的规范,所以在互操作性方面是很方便的. ...

  6. Neutron分析(3)—— neutron-l3-agent

    一.Layer-3 Networking Extension neutron l3作为一种API扩展,向租户提供了路由和NAT功能. l3扩展包含两种资源: router:在不同内部子网中转发数据包: ...

  7. 剑指offer系列29-----链表中环的入口节点-

    [题目]一个链表中包含环,请找出该链表的环的入口结点. [思路]方法一:使用双指针 方法二:利用set集合的特性,不能添加重复数字,否则返回false package com.exe7.offer; ...

  8. Window下Nexus私服搭建

    项目组大部分人员不能访问maven的central repository,因此在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上  环境是:nexus-2.1.1.mav ...

  9. php 获取中文的拼音

    注意事项: 无法识别的中文 亳:bo,如果有此字,结果为空,调用此类之前需要手动加判断 蚌:bang,beng,多音字 莞:guan 圳:zhen 儋:dan 漯:luo 濮:pu 泸:lu 衢:qu ...

  10. TextBox仿Foxmail收件人删除效果

    场景: 发邮件,添加收件人后,删除时直接删除整个收件人. 添加事件: 文本框实现,需要添加以下4个事件: txtQsdw_TextChanged txtQsdw_MouseDown txtQsdw_M ...