.NET基础操作回顾_使用ADO.NET操作SqlServer使用的类
有些工具用的久了或者有新工具出现后,就慢慢的遗忘了很多,它们从熟悉的变成陌生,当然,对于我们来说不是好事吧。
今天回顾一下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使用的类的更多相关文章
- Java基础回顾_第二部分_Java流程控制
Java基础回顾_第二部分 Java流程控制 Scanner对象(扫描器,捕获输入) import java.util.Scanner; public class Demo01 { public st ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
- 巩固复习(Django最基础的部分_具体查看官方文档)
Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...
- C#基础知识回顾--线程传参
C#基础知识回顾--线程传参 在不传递参数情况下,一般大家都使用ThreadStart代理来连接执行函数,ThreadStart委托接收的函数不能有参数, 也不能有返回值.如果希望传递参数给执行函数, ...
- VC与ADO数据库操作
VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...
- JavaWeb开发技术基础概念回顾篇
JavaWeb开发技术基础概念回顾篇 第一章 动态网页开发技术概述 1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页. 2.JSP的运行原理:当用户第 ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- 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 ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
随机推荐
- bootstrap3-typeahead 自动补全
很酷的一个自动补全插件 http://twitter.github.io/typeahead.js 在bootstrap中使用typeahead插件,完成自动补全 相关的文档:https://gith ...
- 持续集成之Jenkins(坏老头)
点击关注哦↑↑↑↑↑↑↑↑↑ 持续集成 有关持续集成的简介,可参考我此前的文章:http://blog.csdn.net/benkaoya/article/details/44993583 Jenki ...
- 什么是JDK
Java Development Kit (JDK) 是太阳微系统针对Java开发人员发布的免费软件开发工具包(SDK,Software development kit).JDK 是整个Java的核心 ...
- JdbcUtils
JdbcUtils 项目结构 db.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql:///myTest username=r ...
- Android 中Fragment使用
Android 中Fragment使用 public class MainActivity extends Activity { public static String[] array = { &q ...
- [转] matlab saveas 和imwrite的区别
http://hi.baidu.com/curbzz/item/04a69e805fc334e3e596e035 saveas(handle,['目录','文件名']) 如果只有一幅图,handle设 ...
- 如何把python最小化安装在客户机上面
因为想尝试在我们的桌面软件中加入python支持,所以想简化python的库,到时候直接放到客户机上面,并且放到我们的目录下,尽量免去不必要的东西,也不要影响机子,不过当写好的程序放到测试机子上后,老 ...
- 【MySQL】数据行长度的一些限制
今天开发在导入数据的时候报一个错误: Row size too large. The maximum row size for the used table type, not counting BL ...
- 黄聪:如何开启IIS7以上的“IIS6管理兼容性”
护卫神PHP套件的安装,需要开启“IIS6管理兼容性”, 那么,如何开启IIS7.IIS7.5.IIS8.0的IIS6兼容模式呢? 设置的时候,请参照如下截图:
- 黄聪:利用OpenXml生成Word2007文档(转)
原文:http://blog.csdn.net/francislaw/article/details/7568317 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 一Op ...