C#连接SqlServer数据库(ADO.NET)

ADO.NET

向.NET程序员公开数据访问服务的类,用于对Microsoft SQL Server和XML 等数据源进行访问,还提供对OLE DB和XML公开的数据源提供一致访问的方法。

两种访问数据的模型:无连接模型(脱机)和连接模型(联机)。

无连接将数据下载到客户机上,并在客户机上将数据封装到内存中,然后可以像访问本地关系数据库一样访问内存中的数据(如DataSet)。

连接模型则依赖于逐记录的访问,这种访问要求打开并保持数据源的连接。

联机时使用Connection、Command、DataAdapter

脱机时使用Connection、Command、DataAdapter、Dataset

ADO.NET的核心对象

·Connection(连接),用来建立与特定数据源的连接

·Command(命令),用来对数据源执行SQL命令语句或存储过程

·DataReader(数据阅读器),用来从数据源中获取只读、向前的数据流

·DataAdapter(数据适配器),用来在数据源和数据集之间交换数据

·DataSet(数据集),用来处理从数据源读出的数据,表示数据在内存中的缓存

 

使用Connection对象连接数据库

主要成员:

·ConnectionString属性   连接字符串,用于获取或设置连接到数据库的信息

·Open()方法    使用ConnectionString所指定的属性设置来打开数据库连接

·Close()方法    关闭数据库的连接

·StateChange事件  当连接状态更改时触发该事件

Connection对象的使用步骤:

⑴·引入ADO.NET命名空间

⑵·创建Connection对象,并设置其ConnectionString属性

⑶·打开与数据库的连接

⑷·对数据库进行读写操作

⑸·关闭与数据库的连接

·⑴引入ADO.NET命名空间

SQL Server数据提供程序  System.Data.SqlClient

ODBC数据提供程序      System.Data.Odbc

OLE DB数据提供程序      System.Data.OleDb

Oracle数据提供程序      System.Data.OracleClient

⑵·创建Connection对象,并设置其ConnectionString属性

如果使用SQL Server身份验证,则连接字符串通常为:

Data Source=服务器名;Initial Catalog=数据库名;User ID=账户;Password=密码

如果使用Windows身份验证,则连接字符串通常为:

Data Source=服务器名;Initial Catalog=数据库名;Integrated Security=SSPI或

Data Source=服务器名;Initial Catalog=数据库名;Trusted Connection=yes

服务器名:是指数据库所在的服务器名称,也可以写成IP地址;如果是本地服务器,可以写成“.”“(local)”“127.0.0.l”或“本地机器名称”

·SqlConnection 连接对象名=new SqlConnection();

连接对象名.ConnectionString=连接字符串;

·连接字符串变量=连接字符串;

SqlConnection 连接对象名 =new SqlConnection(连接字符串变量);

例:

SqlConnection conn=new SqlCounnection();
 conn.ConnectionString=”Data Source=(local);Initial
Catalog=StudentRecord;Integrated  Security=SSPI”;
或
strConn=”Data Source=.;Initial
Catalog=StudentRecord;Trusted_Connection=yes”;
SqlConnection conn=new SqlConnection(strConn);

连接对象名.State   :

Broken 与数据源的连接断开

Closed  连接处于关闭状态

Connecting 连接对象正在与数据源连接

Executing  连接对象正在执行命令

Fetching   连接对象正在检索数据

Open   连接处于打开状态

·conn.State==ConnectionState.Open

打开与关闭数据库连接

设置好ConnectionString属性之后

连接对象名.Open();

连接对象名.Close();

连接对象名.Dispose();这种关闭不能再用Open打开

StateChange事件

连接状态更改时发生。该事件的处理程序接收一个StateChangeEventArgs类型的参数

有两个属性:CurrentState:用于获取连接的新状态

OriginalState:用于获取连接的原始状态

使用Command对象执行SQL语句

向数据库发送SQL命令。如果是检索命令,那么从数据库取回的数据,可以放在DataAdapter或DataReader对象中。

Command主要成员:

Connection属性:获取或设置Command对象使用的Connection对象

CommandType属性:StoredProcedure 存储过程的名称

TableDirect:表的名称

Text:SQL文本命令

CommandText属性:获取或设置要对数据库执行SQL命令

ExecuteNonQuery()方法:执行不返回行的SQL命令(Insert、Delete、Update), 并返回受影响的行数。

ExecuteReader()方法:执行Select命令,并返回一个生成的DataReader对象

ExecuteScalar()方法:执行Select命令,并返回查询所得的结果集中第一行的第 一列{单个值},忽略其他列或行,如果结果为空则返回 null引用,通常用于统计记录数、总和、平均数

Command对象使用一般步骤:

·创建Command对象,并设置其Connection属性

·设置CommandType和CommandText属性

·调用响应方法来执行SQL命令

·根据返回结果进行适当处理

创建并使用SqlCommand对象

·第一种

SqlCommand 命令对象名=new SqlCommand();

命令对象名.Connection=连接对象名;

命令对象名.CommandType=CommandType.枚举成员;

命令对象名.CommandText=命令文本;

方法返回值变量=命令对象名.Execute....();

·第二种

SqlCommand 命令对象名=new SqlCommand(命令文本,连接对象名);

命令对象名.CommandType=CommandType.枚举对象;

方法返回值变量=命令对象名.Execute....();

例:

SqlCommand  comm=new SqlCommand(“select count(*) from studentInfo”,conn);                 //conn是之前设置好的SqlConnection对象
int iCount= comm.ExecuteScalar();
MessageBox.Show(“studentInfo表中共有”+iCount.ToString()+”条记录”);
注:ExecuteScalar()通常与聚合函数一起使用

使用DataReader对象读取数据

DataRead读取行的只进流的联机数据访问方式,DataRead数据是由数据库返回的只读、只能向下滚动的流信息,因此很适合应用在只需读取一次的数据。

主要成员:

FieldCount属性:获取当前行中的列数,默认值为-1;如果未放在有效的记录集,

则为0

HasRows属性:获取一个值,用于指示DataReader对象是否包含一行或多行

IsClosed属性:获取一个值,用于指示DataReader对象是否已关闭

RecordsAffected属性:获取执行SQL语句所更改、插入或删除的行数;如果执

行的是Select语句,返回值为-1

Close()方法:关闭DataReader对象,每次用完都应该调用Close方法

GetName(int index)方法:获取指定列的名称;参数i为从0开始的列序号

GetOrdinal(string name)方法:在给定列的名称的情况下获取列序号;参数name 为列名称

GetValue(int i)方法:获取以本机格式表示的指定列的值,该值为object类型;参 数i为从0开始的列序号

NextReault()方法:当读取批处理SQL语句的结果时,使数据读取器前进到下一

个结果集,返回值为布尔型,如果存在多个结果集,则为true

Read()方法:使数据前进到下一个记录;返回值为布尔型,如果还有记录,则true

例:SqlDataReader reader=comm.ExecuteReader();
 //SqlConnection对象已设置好并打开,comm是之前设置好的SqlCommand对象
     while(reader.Read())
          {//读取一行数据}

数据适配器:DataAdapter对象

在DataSet与数据源之间起到桥梁作用。

属性:

SelectCommand:向数据库发送查询SQL语句。

DeleteCommand:向数据库发送删除SQL语句。

InsertCommand:向数据库发送插入SQL语句。

UpdateCommand:向数据库发送更新SQL语句。

主要的方法:

Fill方法:主要用于填充DataSet数据集

public int Fill(DataSet dataSet,string scTable);

dataSet:记录和架构填充的DataSet

srcTable用于表映射和源表的名称

返回值:已在DataSet中成功添加或刷新的行数

Update方法:更新数据库

填充DataSet数据集

SqlConnection conn;

conn=new SqlConnection(“server=.;database=db_14;uid=sa;pwd=”);

SqlCommand cmd=new SqlCommand(“select *from tb_command”,conn);

SqlDataAdapter sda=new SqlDataAdapter();

sda.SelectCommand=cmd;

DataSet ds=new DataSet();

sda.Fill(ds,”tb_XX”);

dataGridView1.DataSource=ds.Table[0];

更新数据源:

DataTable dt=ds.Tables[“tb_XX”];

sda.FillSchema(dt,SchemaType.Mapped);

DataRow dr=dt.Rows.Find(txtNo.Text);

dr[“姓名”]=txtName.Text.Trim();

dr[“性别”]=txtSex.Text.Trim();

dr[“年龄”]=txtAge.Text.Trim();

dr[“奖金”]=txtjj.Text.Trim();

SqlCommandBuilder cmdbudider=new SqlCommandBuilder(sda);

sda.Update(dt);

数据集:DataSet对象

合并数据集:ds1.Merge(ds,true,MissingSchemaAction.AddWithKey);

复制DataSet:DateSet ds1=ds.Copy();

dataGridView2.DataSource=ds1.Table[0];

时间: 2024-12-05 04:17:32

C#连接SqlServer数据库(ADO.NET)的相关文章

笨鸟先飞随笔:ADO.NET中VS连接Sqlserver数据库的代码

在main函数中添加的连接Sqlserver数据库的代码如下所示: 以下代码用于Sqlserver验证方式 首先需要引用命名空间 using system.System.Data.SqlClient; static void Main(string[] args) { string constring = "server=local;database=teaching;uid=sa;pwd=123456"; using (SqlConnection conn = new SqlConn

笨鸟先飞随笔:ADO.NET中VS连接Sqlserver数据库的代码(Windows身份验证方式补充)

上一篇只写到了数据库Sqlserver连接方式下的连接代码在这里对Windows验证方式的连接做一下补充: 关于VS连接Sqlserver数据库windows验证方式的操作方式: 01.VS窗口中上方菜单依次选择数据 02.添加新数据源 03.然后选择数据库后点击下一步 如下图所示: 04.选择数据集然后点击下一步 如下图所示: 05.点击新建连接,弹出对话框 如下图所示: 06.数据源显示为Microsoft SQL server SqlClient 如果不是则需要点击更改修改为Microso

C#连接Access数据库,C#连接Excel数据库,C#连接SqlServer数据库,C#连接Mysql数据库总结

大二下学期写的了,如今毕业一个月了,整理整理 额,以前写的好幼稚,只有自己明白了,网上一大堆,大概的意思说下吧 MySQL========================================= http://user.qzone.qq.com/652768664/blog/1347859952 连接mysql需要安装mysql,在mysql的C盘安装目录有一个连接 lib,将改lib添加引用用项目OK; static void Main(string[] args) { List<s

asp.net 连接sqlserver数据库

在asp.net中连接sqlserver数据库之前,首先得确保正常安装了sqlserver2008,同时有数据库. 在项目中添加一个类DB,用来专门负责执行对数据库的增删改查.在添加的过程中会弹出下面的一个提示 直接点是就可以了. 在这个类中,首先定义一个连接对象 private SqlConnection conn = null;然后定义下面三个函数 private void SetConnection()//初始化连接对象 { if (conn == null) { //获取配置文件中的数据

openTSP连接sqlServer数据库&amp;jpa调用存储过程

openTSP框架下的模块都是连接mysql数据库,近期青汽有连接sqlServer数据库的需求,在调研后配置了sqlServer数据库,使用jpa调用存储过程,中间也踩了不少坑,总结一下,避免大家再掉进去. 1.首先配置sqlServer的依赖 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version

java 连接sqlserver数据库语句

import java.sql.*; /** * java 连接sqlserver数据库语句 * @author Administrator * */ public class Main {         public static void main(String [] args) throws SQLException {                                     String driverName="com.microsoft.sqlserver.jdbc.

JDBC连接SqlServer数据库(非默认实例)方法

一般我们在连接数据库的时候都是用的默认实例名,今天遇到了用非默认是实例名:连接代码如下(Java): URL=jdbc:microsoft:sqlserver://192.168.1.85//DEMO;DatabaseName=PePsiEasyData 说明: 192.168.1.85是数据库地址.不指定端口 //DEMO 指定实例名为DEMO 也可以写成这样: URL=jdbc:microsoft:sqlserver://192.168.1.85;instanceName=DEMO;Data

unity3d 连接sqlserver数据库

U3d连接SQLServer首先把Unity安装目录下的System.Data.dll拷到工程的Asset/Plugins目录下,然后编写连接数据库的脚本,在以上两个步骤无误的情况下,提示这个错误,要考虑SQLServer的相关服务有没有开启,同时要在SQLServer的配置管理器中启用TCP/IP协议,步骤如下 打开开始—程序—Microsoft SQL Server 2005—配置工具—SQL Server Configuration Manager-- SQL Server 2005网络配

PowerDesigner连接SqlServer数据库导出表结构

原文:PowerDesigner连接SqlServer数据库导出表结构 环境:PowerDesigner15 数据库sql server 2005 第一步.打开PowerDesigner ,建立一个物理数据模型,具体如下图: 第二步.新建成功之后,点击"Database"->"Connect..",配置需要连接的数据源. 具体配置如下: 第三步.点击"Database"->"Reverse Engineer Database

ServiceStack OrmLite 连接Sqlserver数据库

技术交流群:665060698 ServiceStack是一个.net的服务类库,包含的数据处理非常丰富,执行效率也非常高, 但ServiceStack也不止是用来写服务,也可以引用其中的dll进行数据库的连接操作,ServiceStack OrmLite支持的数据类型也很多,包括Sqlserver.Mysql.Postgresql.Sqlite等,下边分享一个 简单 ServiceStack OrmLite的连接sqlserver数据库,并获取数据.  var _sqlserverFla =