使用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类

这个类提供一个数据源的连接,它的构造函数接受一个可选参数,是个连接字符串。连接字符串由一些参数构成,其一般的参数由下表列出:

一旦定义和初始化了一个连接对象,那么就可以调用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,下面的图片说明了我们要访问的数据内容:

运行结果如下:

这只是一种连接数据库的方法,其他的方法大家有兴趣可以自己试试。软件开发离不开数据库,因此掌握各种语言与数据库的交互式一项不可避免的技术,VB.NET介绍的东西很多,我只是把我认为目前最重要的部分进行了总结学习,为之后的系统重构做准备。

使用ADO.NET对SQL Server数据库进行访问

时间: 2024-10-22 22:02:08

使用ADO.NET对SQL Server数据库进行访问的相关文章

2014-07-30 MVC框架中对SQL Server数据库的访问

今天是在吾索实习的第16天.我自己主要学习了基于MVC框架的系统的开发时,对SQL Server数据库的相关访问.其步骤如下: 第一步,在Models文件夹中创建一个类,并命名为Movies.cs,如图1所示: 图1 第二步,在上述Movies.cs文件中的namespace MvcTest.Models{}中输入如下代码: 1 public class Movie 2 { 3 public int ID { get; set; } 4 public string Title { get; se

第一个ADO.NET连接SQl server数据库

ado.net连接sql server2008本机数据库 1.只连接数据库,然后做简单查询 1 using (SqlConnection conn = new SqlConnection("Data Source=127.0.0.1; Initial Catalog=MyTest;User ID=sa;Password=123456")) 2 { 3 conn.Open(); 4 using (SqlCommand cmd = conn.CreateCommand()) 5 { 6 l

[转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法

问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示:   类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varchar   UserDepart表,存放用户所拥有的部门(我们假设一个用户拥有多个部门,虽然听起来有点别扭,此处仅作示例,可以理解为一个用户拥有多个职位等等),该表的基本结构如下所示:   类型 说明 ID_UserDepart int 自动增长字段,用作该表的主键 ID_User int 用户编号 I

ADO.NET 获取SQL SERVER数据库架构信息

1.确定可用字段数目 sqlDataReader类提供了FieldCount属性,可确定查询反悔了多少个字段. 2.确定返回行的数目 sqlDataReader中没有指示可用行的属性. 3.确定字段的名称 使用sqlDataReader的GetName方法,该方法接受一个Int整数,指定字段的序号,并在一个字段中返回其名称. 4.确定字段在.NET中的数据类型 要确定用于存储在一特定字段的内容的.NET数据类型,请使用SqlDataReader的GetFieldType方法,与GetName方法

Sql Server数据库对象访问权限控制

以下内容主要针对database层面的数据访问权限(比如select, insert, update, delete, execute…) 1.直接给user权限GRANT EXECUTE TO [user] 2.通过role 控制权限,把user加入role中,继承Role所拥有的权限GRANT EXECUTE TO [Role]ALTER ROLE [Role] ADD MEMBER [Member] 3.通过app role的方式访问数据库Application Role 是数据库级别的R

C# ADO.NET访问SQL Server数据库<转>

ADO.NET的对象主要包括Connection.Command.DataReader.DataAdapter.DataSet,ADO.NET访问数据库主要包括两个步骤:建立数据库连接.读取或更新数据. 一.建立数据库连接 Connection对象负责建立和控制用户应用程序和数据库之间的连接.所有的数据库连接都要用到连接字符串,该字符串是使用分号隔开的多项信息,其内容随着数据库类型和访问内容的变化而变化. 连接字符串的格式:"Server=服务器名或服务器IP地址;DataBase=数据库名称;

原生的ado.net(访问sql server数据库)

本文介绍原生的ado.net(访问sql server数据库) 写在前面 数据库连接字符串 过时的写法 string str = "server=localhost;database=my_db;uid=sa;pwd=123"; 主流的写法 sql验证写法 string str = "Data Source=localhost;Initial Catalog=my_db;User ID=sa;Password=123"; windows验证写法 string str

[转]C#操作SQL Server数据库

转自:C#操作SQL Server数据库 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用: 第三,对SQL或存储过程执行后返回的“结果”进行操作. 对返回“结果”的操作可以分为两类: 一是用SqlDataReader直接一行一行的读取数据集: 二是DataSet联合SqlDataAdapter来操作数据库. 两者比较: SqlDataRead

50种方法优化SQL Server数据库查询(转载)

原文地址:http://www.cnblogs.com/zhycyq/articles/2636748.html 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用