使用ADO.NET对SQL Server数据库进行訪问
在上一篇博客中我们给大家简介了一下VB.NET语言的一些情况,至于理论知识的学习我们能够利用VB的知识体系为基础。再将面向对象程序设计语言的知识进行融合便可进行编程实战。
假设我们须要訪问一个企业关系数据库(比方SQL Server或者Oracle),而且须要包括由复杂关系构成的表中的数据,怎样去实现?我们能够利用ADO.NET内置功能提取并操作数据,就想插入、更新和删除SQL Server里的数据一样。
首先简介一下ADO.NET。
所谓的ADO就是ActiveXData Objects,经过多年的发展成为现在的ADO.NET。ADO.NET架构被设计为一个断开的架构。也就是说。应用程序与数据库的连接时间仅仅是确保检索或者更新数据。然后就断开。
假设正在检索数据。能够把数据存储到ADO.NET的一个数据对象中,如DataSet或者DataView。
这样的处理机制有一个最大的优势就是能够使数据库支持很多其它的用户操作。提高数据库的訪问效率。
当我们在讨论ADO.NET时,实际上是在说System.Data和System.OleDb名称空间。
这两个名称空间里的非常多类都能够用来从差点儿全部类型的数据源中訪问数据,本次我们仅仅看与SQL Server有关的部分,以下介绍几个和数据库訪问有关的类。
OleDbConnection、OleDbDataAdapter和OleDbCommand均派生于System.Data.OleDb。DataSet和DataView则派生自System.Data名称空间。
在使用这些类之前,必须导入它们各自所属的名称空间。
OleDbConnection类
这个类提供一个数据源的连接,它的构造函数接受一个可选參数,是个连接字符串。连接字符串由一些參数构成,其一般的參数由下表列出:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyOTYwNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
一旦定义和初始化了一个连接对象。那么就能够调用OleDbConnection对象的不论什么方法。比方Open和Close。
OleDbDataAdapter类
这个类能够在全部的OLEDB数据源中读写数据,而且能够设置为包括要运行的SQL语句或者存储过程名。OleDbDataAdapter并不真正存储不论什么数据,而是作为DataSet类和数据仓库之间的桥梁。
OleDbDataAdapter类的属性SelectCommand属性是从OleDbCommand类派生而来,用来指定选取哪些数据和怎样选取这些刷数据。当指定SelectCommand属性时,必须设置其它属性使OleDbDataAdapter对象知道怎样检索数据。
其经常使用属性有Connection:设置用来訪问数据库的OleDbConnection对象,CommandText:设置用来选取数据的SQL语句或者存储过程名称。CommandType:设置决定怎样解释CommandText属性的值。
一旦正确设置了SelectCommand属性,接下来就要通过调用ExecuteNonQuery方法去运行指定的SQL语句或存储过程,并返回受SQL字符串存储过程影响的行数。对于Select语句。返回值永远是-1,对于Insert。Update和Delete等语句。返回值是命令影响的行数。
之后就要调用Fill方法向DataSet对象中填充数据了,其语法格式为:Fill(DataSet。string),DataSet參数用于指定一个有效的DataSet对象,string參数指定了被操作的表名。
DataSet类
这个类就是用来存储从数据库中检索到的数据,并保存到客户机的内存中。它的对象包括了表的集合、关系和与从数据库中数据读取一致的约束条件。
DataView类
此类一般用于从DataSet中排序、过滤、查找、编辑和导航数据。DataView是可绑定的,这就意味着他能够像DataSet一样绑定到控件。
DataSet和DataView对象使用的内存数据是DataTable对象,DataView类是DataTable对象的一个自己定义视图,DataTable对象继承于DataSet。
OleDbCommand类
这个类表示对数据库的查询,这个查询能够是选取、插入、更新或者删除。能够表示为SQL字符串或者存储过程。
运行的查询能够包括參数。也能够不包括。OleDbCommand类的构造函数非常多,但最简单的方法是不含參数初始化一个OleDbCommand对象,这样一旦初始化对象后,能够设置须要的属性来=运行手头的任务。详细的属性描写叙述大家自己查资料了解,限于篇幅不再赘述。
光说不练假把式,以下我们来做一个小样例。向大家展示一下怎样訪问SQL Server数据库:首先创建一个Windows窗口应用程序,在窗口上放置一个DataGridView控件,然后在代码编辑器中编写例如以下代码:
Imports System.Data
Imports System.Data.OleDb Public Class Form1
Inherits System.Windows.Forms.Form
Dim objConnection As OleDbConnection = New OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=charge_sys;User ID=sa;Password=123456;")
Dim objDataAdapter As New OleDbDataAdapter()
Dim objDataSet As DataSet = New DataSet()
Dim objreader As OleDbDataReader Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
objConnection.Open()
objDataAdapter.SelectCommand = New OleDbCommand()
objDataAdapter.SelectCommand.Connection = objConnection
objDataAdapter.SelectCommand.CommandText = "select studentNo,cardno,studentName from student_Info "
objDataAdapter.SelectCommand.CommandType = CommandType.Text objDataAdapter.SelectCommand.ExecuteNonQuery() objDataAdapter.Fill(objDataSet, "charge_sys")
objConnection.Close() objDataAdapter = Nothing
objConnection = Nothing DataGridView1.DataSource = objDataSet
DataGridView1.DataMember = "charge_sys" End Sub
'Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
' objDataSet = Nothing
'End Sub
End Class
笔者使用的是VisualStudio2012。使用的数据库是SQL Server2008,以下的图片说明了我们要訪问的数据内容:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyOTYwNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
执行结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDkyOTYwNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
这仅仅是一种连接数据库的方法,其它的方法大家有兴趣能够自己试试。软件开发离不开数据库,因此掌握各种语言与数据库的交互式一项不可避免的技术,VB.NET介绍的东西非常多,我仅仅是把我觉得眼下最重要的部分进行了总结学习,为之后的系统重构做准备。
使用ADO.NET对SQL Server数据库进行訪问的更多相关文章
- [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法
问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示: 类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varcha ...
- ADO.NET 获取SQL SERVER数据库架构信息
1.确定可用字段数目 sqlDataReader类提供了FieldCount属性,可确定查询反悔了多少个字段. 2.确定返回行的数目 sqlDataReader中没有指示可用行的属性. 3.确定字段的 ...
- 【转】PowerShell 连接SQL Server 数据库 - ADO.NET
转至:http://www.pstips.net/connect-sql-database.html PowerShell 通过ADO.NET连接SQL Server数据库,并执行SQL脚本.工作中整 ...
- 原生的ado.net(访问sql server数据库)
本文介绍原生的ado.net(访问sql server数据库) 写在前面 数据库连接字符串 过时的写法 string str = "server=localhost;database=my_ ...
- 转:SQL SERVER数据库中实现快速的数据提取和数据分页
探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo]. ...
- 第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)
在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来 ...
- 转载 50种方法优化SQL Server数据库查询
原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...
- 通过一个正则表达式,让SQL Server数据库的带参sql也支持位置参数语法!
.NET Framework 2.0 中,Microsoft 在 System.Data.Common 名称空间下定义了一组类用来让程序员编写适用于不同数据库的数据访问代码,而且还在 Enterpri ...
- JDBC连接SQL server与ADO.NET连接Sql Server对比
JDBC连接SQL server与ADO.NET连接Sql Server对比 1.JDBC连接SQL server 1)java方面目前有很多驱动能够驱动连接SQL servernet. 主流的有 ...
随机推荐
- 嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=15873837810484552531 中的1-14讲
#coding=gbk#嵩天老师的零基础Python笔记:https://www.bilibili.com/video/av13570243/?from=search&seid=1587383 ...
- notepad++编辑器写python需注意使用utf-8编码
语言:python3.4 文本编辑器:notepad++ 报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in ...
- xtu summer individual 3 C.Infinite Maze
B. Infinite Maze time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- CodeForces 444C 节点更新求变化值的和
http://vjudge.net/problem/viewProblem.action?id=51622 题目大意: 给定一列n个数字,最初赋予值1到n 两个操作:1.将区间[l,r]内的数改为x, ...
- bzoj1202:[HNOI2005]狡猾的商人 【并查集】
Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 ...
- BZOJ4552 - [TJOI2016]排序
Portal Description 给出一个\(1..n(n\leq10^5)\)的排列,进行\(m(m\leq10^5)\)次操作: 升序排列\([L,R]\)中的数. 降序排列\([L,R]\) ...
- UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
转载:http://blog.csdn.net/ocean181/article/details/6117369 UML的关联(Association), 聚合(Aggregation), 组合(Co ...
- Java jsp页面中jstl标签详解
JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...
- noj 2033 一页书的书 [ dp + 组合数 ]
传送门 一页书的书 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 53 测试通过 : 1 ...
- React学习及实例开发(二)——用Ant Design写一个简单页面
本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.引入Ant Design 1.安装antd yarn add antd 2.引入 react-app-re ...