ado 编程 学习日志

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 - 管道的另一端上无任何进程。)

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

确定  

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

posted @ 2008-10-16 11:48  sdgxboy  阅读(159)  评论(0编辑  收藏  举报