Oracle Data Provider for .NET 的使用
Oracle Data Provider for .NET 的使用经验
Oracle Data Provider for .NET 是Oracle提供的基于Ado.net接口的一个开发包。
开发者可以通过它,简单的实现在.net中访问oracle数据库。
因为在开发中一直使用该开发包,所以想基于此谈谈使用该开发包的一些经验。
(基于版本:Oracle Data Provider for .NET Release 10.2
关于与Microsoft .NET Framework 1.1 Data Provider for Oracle 的比较可参考以下网页
http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnadonet/html/odpvsmsdp.asp)
1. 通过DataAdapter访问数据库
DataAdapter有四个属性SelectCommand,DeleteCommand,InsertCommand,UpdateCommand
1.1 当做检索处理的时候, 执行SelectCommand的操作,返回数据集。
// C# 例子
using System;
using System.Data;
using System.Xml;
using Oracle.DataAccess.Client;
class testSample
{
static void Main()
{
//数据库连接打开
OracleConnection con = new OracleConnection();
con.ConnectionString = "User Id=scott;Password=tiger;Data Source=oracle;";
con.Open();
Console.WriteLine("Connected Successfully");
// Create the command
// sql文
OracleCommand cmd = new OracleCommand("", con);
//select statement
string strSelectSql = "SELECT STU_ID, STU_NAME, AGE, BIRTHDAY, SEX FROM TBL_STUDENT " +
" WHERE SEX = :I_SEX AND BIRTHDAY >= :I_BIRTHDAY AND AGE = :I_AGE ";
//command和检索sql文 关联
cmd.CommandText = strSelectSql;
//sql文中变量通过oracle参数传递
OracleParameter oraParameter;
oraParameter = new OracleParameter("I_SEX",OracleDbType.Varchar2, 2);
oraParameter.Value = "01";
cmd.Parameters.Add(oraParameter);//字符型
oraParameter = new OracleParameter("I_BIRTHDAY",OracleDbType.Date);//日期型
oraParameter.Value = "1986/01/01";
cmd.Parameters.Add(oraParameter);
oraParameter = new OracleParameter("I_AGE",OracleDbType.Int32);
oraParameter.Value = 20;
cmd.Parameters.Add(oraParameter);
DataSet dtTmp = new DataSet();
using(OracleDataAdapter dataAdapter = new OracleDataAdapter())
{
dataAdapter.SelectCommand = cmd;//检索command设置
dataAdapter.Fill(dtTmp);//检索结果保存在dtTmp数据集中
}
//
Console.WriteLine("Number of rows : {0} ", dtTmp.Tables[0].Rows.Count);
// Close and Dispose OracleConnection object
con.Close();
con.Dispose();
}
1.2 如果sql文只是想count(*) 获得数据库中记录件数,可以直接使用OracleCommand.ExecuteScalar()来快速取得。
// C# 例子
Cmd = new OracleCommand( "SELECT COUNT(*) FROM TBL_STUDENT", Conn );
Object o = Cmd.ExecuteScalar();
int nRecordCount = Convert.ToInt32(o.ToString());
[ 未完待续]