您的位置:首页 > 数据库

ADO.NET中主要对象

2011-06-07 16:20 369 查看

本文以oracle数据库连接为例子,其他数据库的原理类似。

各对象的使用需using System.Data.OracleClient

1.OracleConnection

Oracle 数据库的一个唯一的连接
属性:
ConnectionString: 获取或设置用于打开 Oracle 数据库的字符串。格式为“Data Source=;User ID=;PassWord=”。
方法:
Open(): 打开数据库连接。要用try{}catch{}
Close(): 关闭数据库连接。

2.OracleCommand

针对数据库执行sql语句。
属性:
CommandText: 要执行的sql语句。
Connection: 即已经定义的OracleConnection。
Parameters: SQL 语句或存储过程的参数。
例如:
OracleCommand cmd = new OracleCommand();
cmd.CommandText = "select t.*, t.rowid from examinfo t where t.ord_no=:aaaa";
cmd.Parameters.Add("aaaa",OracleDbType.Char);
cmd.Parameters["aaaa"].Value = "1";
方法:
ExecuteNonQuery(): 执行 SQL 语句并返回受影响的行数。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行
数。对于 CREATE TABLE 和 DROP TABLE 语句,返回值为 0。对于所有其他类型的语句,返回值为 -1。
ExecuteReader(): 将 CommandText 发送到 Connection 并生成一个OracleDataReader。

3.OracleDataAdapter

用于检索和保存数据填充 DataSet或DataTable。
属性:
InsertCommand: 用于插入的OracleCommand。
UpdateCommand: 用于更新的OracleCommand。
DeleteCommand: 用于删除的OracleCommand。
SelectCommand: 用于查询的OracleCommand。
例如:
OracleCommand cmd = new OracleCommand(“select t.*, t.rowid from examinfo t where t.ord_no=‘1’”, ocn);
OracleDataAdapter oda = new OracleDataAdapter();
oda.SelectCommand = cmd;
DataTable dt = new DataTable ();
oda.fill(dt);
方法:
fill(): 填充DataSet或DataTable,参数为DataSet或DataTable。

4.OracleDataReader

提供从数据源读取数据行的只进流的方法,要创建 OracleDataReader,必须调用 OracleCommand 对象的ExecuteReader 方法,
而不能直接使用构造函数。
属性:
FieldCount: 获取当前行的列数。
HasRows: 是否含有一行或多行。
方法:
Read(): 使 OracleDataAdapter前进到下一条记录,OracleDataReader 的默认位置在第一条记录前面。因此,必须调用 Read
开始访问任何数据。
例如:
OracleDataReader dataReader = cmd.ExecuteReader();
int i = 0;
while (dataReader.Read())
{
i++;
Console.WriteLine(i);
Console.WriteLine(dataReader["REP_ID"]);
}
“REP_ID”为检索出的DataTable的一列名;
DataReader和DataSet的区别:
1.DataSet是存放在内存里的,功能比DataReader强大;DataReader适合读取大量数据,且不存在内存里。
2.DataReader需要在线读取,即与服务器断开连接后不存在;DataSet与服务器断开连接后仍然存在。

代码示例:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OracleClient;
namespace ConsoleApplication1
{
class Program
{
// 连接字符串
static string ConStr = "Data Source=REP;User ID=rise;PassWord=rise";
// sql 文
static string CmdStr = "select t.*, t.rowid from exam_info t where t.ord_no='1'";
DataTable dt = new DataTable();
public static void Main(string[] args)
{
string str = Console.ReadLine();
switch (str)
{
case "1":
new Program().oracleConnect1();
break;
case "2":
new Program().oracleConnect2();
break;
case "3":
new Program().oracleInsert();
break;
case "4":
new Program().oracleDataReaderTest();
break;
}
}
// 参数形式的OracleCommand
private void oracleConnect1()
{
OracleConnection ocn = new OracleConnection();
ocn.ConnectionString = ConStr;
OracleCommand cmd = new OracleCommand();
cmd.CommandText = "select t.*, t.rowid from exam_info t where t.ord_no=:aaaa";
cmd.Parameters.Add("aaaa",OracleType.VarChar);
cmd.Parameters["aaaa"].Value = "1";
cmd.Connection = ocn;
try
{
ocn.Open();
OracleDataAdapter oda = new OracleDataAdapter(cmd);
oda.Fill(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
ocn.Close();
}
// OracleDataAdapter使用
private void oracleConnect2()
{
OracleConnection ocn = new OracleConnection(ConStr);
OracleCommand cmd = new OracleCommand(CmdStr, ocn);
OracleDataAdapter oda = new OracleDataAdapter();
oda.SelectCommand = cmd;
try
{
ocn.Open();
oda.Fill(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
ocn.Close();
}
// ExecuteNonQuery方法的使用
private void oracleInsert()
{
string tempCmdStr = "insert into group_tbl values (1000,0,'tong')";
string tempConStr = "Data Source=ZO;User ID=rise;PassWord=rise";
OracleConnection ocn = new OracleConnection(tempConStr);
OracleCommand cmd = new OracleCommand(tempCmdStr, ocn);
try
{
ocn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
ocn.Close();
}
// dataReader的使用
private void oracleDataReaderTest()
{
OracleConnection ocn = new OracleConnection(ConStr);
OracleCommand cmd = new OracleCommand(CmdStr, ocn);
OracleDataAdapter oda = new OracleDataAdapter();
oda.SelectCommand = cmd;
try
{
ocn.Open();
oda.Fill(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
OracleDataReader dataReader = cmd.ExecuteReader();
int i = 0;
while (dataReader.Read())
{
i++;
Console.WriteLine(i);
Console.WriteLine(dataReader["REP_ID"]);
}
cmd.Dispose();
Console.ReadLine();
ocn.Close();
}
}
}
输入4 的运行结果:

1
100000278
2
100000035
3
300000001
4
300000002
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息