ado 编程 学习日志

本文介绍了ADO.NET的基本概念,包括连接数据库、执行SQL语句和存储过程的方法。探讨了SqlCommand、SqlDataAdapter及OleDbDataReader等组件的功能差异,并讲解了如何利用连接池优化数据库访问效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ado编程日志

Ado整体概念;

1 ado是封装了ole db 的一套操作数据库的组件。

2 基本上有三个方面组成 connect command recordset ;分别代表连接数据库,下命令,获取的数据结果集。

3 用好ado的关键是 熟练使用ado提供的各种对象 object 属性 property ,方法 method,容器 collection<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

4 command sql语句 , dataadapter dataset和数据源之间的桥梁,connect 链接数据库。

Datareader 向前读数据源中的行数据。 Connectstringbuild ,关联链接数据库的链接字符串。

Net 提供的连接sqlserver数据库的方法

Net 链接数据库的方法有四种:

1 sql 专用的 SqlConnection

2 oralce专用的OracleConnection

3 oledb专用的 OleDbConnection

4 不经常使用。

基本是声明类,然后使用链接字符串对类进行初始化! 进行open操作就可以了。

链接字符串得到的方法 可以使用udl得到。

或者使用:OleDbConnectionStringBuilder 类 创建链接字符串。

Sqlcommand and sqldataadapter and oledatareader的区别

Sqlcommand 就是一个要执行的sql语句,或者是一个存储过程。

从类的角度去考虑就是 核心数据是sql语句和存储过程,但是其也包含一些对数据执行的方法,属性。所以那! 就出现下面这种情况。

1 虽然是sql语句。但是也可以通过方法的实现得到执行的结果,当然是比较简单的结果。要从类的设计上去考虑这个问题就不难那么理解了。

Sqldataadapter 表示的一组命令 和一个数据库连接。用于返回dataset 和更新数据源。是dataset 和数据库之间的桥梁。用于检索和保存数据。

从类的角度考虑net类库,虽然很多类看起来功能相同,提供的方法和属性也差不多,但是可以从不同的角度去考虑这个类,那么必将会另有一番天地。

OleDbDataReader

数据源读取数据,但是读取数据的时间是以只进流的方式读取。

另外reader类自己没有构造函数,只能通过command累的方法进行创建。

另外reader使用完毕后,必须自己手工进行关闭,否则comamd就不能进行工作了,知道reader关闭之后才可以;

疑问 什么情况下使用 oledbdatareader 这个类,

Ado调用存储过程

示例代码:

//执行sql语句

OleDbCommand cmd = new OleDbCommand();

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("aa",OleDbType.VarChar);

cmd.CommandText = "ProBIZJCX001";

cmd.Connection = cnn;

//todo 以后写了完整的存储过程之后再调用存储过程。

DataSet ds = new DataSet();

OleDbDataAdapter dataAd = new OleDbDataAdapter(cmd);

dataAd.Fill(ds);

this.dataGridView1.DataSource = ds.Tables[0];

MessageBox.Show("获取数据成功!");

数据库连接池

连接到数据源可能需要很长时间。 为了最大程度地降低打开连接的成本,ADO.NET 使用一种称为连接池 的优化技术,这种技术可最大程度地降低重复打开和关闭连接所造成的成本。连接池的关系是放到运行数据库的机器上进行管理的。而不是放到程序运行的机器上。

使用过程中需要注意的问题

1 使用完链接后要关闭连接,close dispable 把连接放入连接池。

2 默认的链接是使用连接池的。

保存dataset心得

1 connection cnn

3 建立command ,非别是select update insert delte 四种情况

4 建立dataadpter ,把上面的四种情况闲式赋值给dataadpter

5 最后调用 dataadpter update 函数 就可以实现这个功能。

6 如果不显式的对commamnd 进行操作,那么就是用 commandbuild 自动管理 command;明天对这种情况进行详细处理。

使用commandbuild自动管理dataadapter执行命令

1 只有新增的数据可以使用commandbuild自动管理command命令。

2 Delte update 都不能进行自动管理command命令。

3 这里以后再研究一下!

处理dataset中多条记录插入到数据中的事务处理方法;

使用环境 :

1 Dataset中表中有超大量的数据。

2 把这些数据存放到数据表中,如果使用sql语句控制事务 ,那么sql有可能超长。所以只能通过net平台的事务处理机制进行处理。

3 大量数据要么都处理,要么都不处理。

1 使用同一个connection对象的command 都用使用同一个tancecation

2 如果使用comandbuilder 管理command 那么就要显式为每个command指定制定tracecation

示例代码 如下

try

{

//连接数据库

string CnnStr = "";

CnnStr = @"Provider=OraOLEDB.Oracle.1;Password=aaaaaa;User ID=lc00019999;Data Source=mybase";

OleDbConnectionStringBuilder cnnstr = new OleDbConnectionStringBuilder(CnnStr);

System.Data.OleDb.OleDbConnection cnn = new System.Data.OleDb.OleDbConnection();

cnn.ConnectionString = cnnstr.ConnectionString;

cnn.Open();

OleDbCommand cmd = new OleDbCommand("select * from zjzh ", cnn);

OleDbDataAdapter da = new OleDbDataAdapter(cmd);

DataSet ds = new DataSet("WHSZJZH");

da.Fill(ds, "WHSZJZH");

DataSet insetDs = new DataSet();

insetDs = ds.Clone();

//DataTable insertTb = new DataTable("WHSZJZH");

//insetDs.Tables.Add(insertTb);

DataRowCollection drCollection = insetDs.Tables["WHSZJZH"].Rows;

foreach (DataRow DR in ds.Tables["WHSZJZH"].Rows)

{

drCollection.Add(DR.ItemArray);

}

//保存数据

OleDbCommandBuilder cmdbuilde = new OleDbCommandBuilder(da);

cmd.CommandText = "select * from whszjzh";

cmdbuilde.RefreshSchema();

cmdbuilde.DataAdapter = da;

OleDbTransaction trance = cnn.BeginTransaction();

//trance.Begin();

cmd.Transaction = trance; //注意为每个command 指定事务对象;

try

{

da.Update(insetDs,"WHSZJZH");

trance.Commit();

MessageBox.Show("事务提交成功");

}

catch (Exception err)

{

trance.Rollback();

MessageBox.Show("事务提交失败" + err.Message);

}

}

catch (Exception err)

{

MessageBox.Show(err.Message);

}

附件:

常见的数据库连接字符串

对各种数据源连接各种数据库常用连接字符串,归纳了一下,如下:
(
)常用连接:
1.
使用SqlConnection对象:
public void SqlConnectionOpen()
{
SqlConnection conn= new SqlConnection();
conn.ConnectionString = "user id=sa;password=;initial catalog=northwind;datasource=localhost;connect Timeout=20";
conn.Open();
}
2.
使用OleDbConnection对象:
public void OleDBConnectionOpen()
{
OleDBConnection conn = new OleDbconnection();
conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:/Customer.mdb";
conn.Open();
}
(
)其它:
1.ODBC
连接Access本地数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.mdb)};"+"Dbq=C:/a.mdb;"+
"Uid=Admin;"+"Pwd=;");
2.ODBC
连接Access系统数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.mdb)};"+"Dbq=C:/a.mdb;"+
"SystemDB=Admin;"+"Pwd=;");
3.ODBC
连接Access系统数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.mdb)};"+"Dbq=//server/share/a.mdb;");
4.ODBC
连接Excel系统数据库
conGoodDay.Open("Driver={Microsoft Access Driver(*.xls)};"+"DriverId=790;"+
"Dbq=C:/a.xls;"+"DefaultDir=c:/somepath;");
5.ODBC
连接Oracle系统数据库
conGoodDay.Open("Driver={Microsoft ODBC for Oracle};"+"Server=OracleServer.world;"+
"Uid=Admin;"+"Pwd=password;");
6.ODBC
连接Sql Servr
conGoodDay.Open("Driver={Sql Server};"+"Server=myServer;"+"Database=myDatabaseName;"
"Uid=Admin;"+"Pwd=password;");
7.ODBC
连接Visual FoxPro
conGoodDay.Open("Driver={Microsoft Visual FoxPro Driver};"+
"SourceType=DBC;"+"SourceDB=c:a.dbc;"+"Exclusive=No;");

另外,一个专业连接字符串网站,里面介绍各种数据源连接各种数据库的字符串:
http://www.connectionstrings.com/

Net数据库连接字符床

ADO.net 中数据库连接方式(微软提供)

微软提供了以下四种数据库连接方式:
System.Data.OleDb.OleDbConnection
System.Data.SqlClient.SqlConnection
System.Data.Odbc.OdbcConnection
System.Data.OracleClient.OracleConnection
下面我们以范例的方式,来依次说明:
System.Data.SqlClient.SqlConnection
常用的一些连接字符串(C#代码)
SqlConnection conn
= new SqlConnection( "Server=(local);user id=sa;pwd=sa;database=Pubs;");
SqlConnection conn
= new SqlConnection("server=(local)//NetSDK;database=pubs;Integrated Security=SSPI");
SqlConnection conn = new SqlConnection(
"Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;");
SqlConnection conn = new SqlConnection(
" data source=(local);initial catalog=xr;integrated security=SSPI;
persist security info=False;workstation id=XURUI;packet size=4096; ");
SqlConnection myConn = new
System.Data.SqlClient.SqlConnection("Persist Security Info=False;Integrated
Security=SSPI;database=northwind;server=mySQLServer");
SqlConnection conn = new SqlConnection(
" uid=sa;pwd=passwords;initial catalog=pubs;data source=127.0.0.1;Connect Timeout=900");
更多字符串连接说明请看MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataSqlClientSqlConnectionClassConnectionStringTopic.asp
System.Data.OleDb.OleDbConnection
常用的一些连接字符串(C#代码)
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/MyWeb/81/05/GrocerToGo.mdb");
OleDbConnection conn = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0;Password=;
User ID=Admin;Data Source=grocertogo.mdb;");
OleDbConnection conn = new OleDbConnection(
"Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=yes");
OleDbConnection conn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:/bin/LocalAccess40.mdb");
OleDbConnection conn = new OleDbConnection(
"Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI");
更多字符串连接说明请看MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOleDbOleDbConnectionClassConnectionStringTopic.asp?frame=true

System.Data.OracleClient.OracleConnection
常用的一些连接字符串(C#代码)
OracleConnection myConn = new System.Data.OracleClient.OracleConnection(
"Data Source=Oracle8i;Integrated Security=yes");

更多字符串连接说明请看MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDataOracleClientOracleConnectionClassConnectionStringTopic.asp?frame=true

System.Data.Odbc.OdbcConnection
常用的一些连接字符串(C#代码)

OdbcConnection conn = new OdbcConnection(
"Driver={SQL Server};Server=MyServer;Trusted_Connection=yes;Database=Northwind;");
OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;
Persist Security Info=False;Trusted_Connection=yes");
OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:/bin/nwind.mdb");
OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/bin/book1.xls");

OdbcConnection conn = new OdbcConnection(
"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:/bin");
OdbcConnection conn = new OdbcConnection("DSN=dsnname");

---------------------------

---------------------------

已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)

---------------------------

确定

---------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值