- 类型:数据库类大小:25.3M语言:中文 评分:2.0
- 标签:
立即下载
安装了Oracle Db Provider后Oracle.DataAccess.dll的路径是:D:\app\Administrator\product\11.2.0\client_1\ODP.NET\bin\2.x
下面演示了使用OleDb, msdaora, System.Data.OracleClient.OracleConnection, Oracle.DataAccess.Client.OracleConnection 以及用DbProviderFactories.GetFactory方式来获取Connection
另外如果是64位操作系统,需要安装64位的驱动
代码如下:
using System;
using System.Data;
using System.Data.Common;
namespace Wintest
{
class Program
{
static void Main(string[] args)
{
ShowAllDbProviderFactories();
string connString;
/* ole db provider */
connString = "Provider=OraOledb.Oracle;Data Source=xe;User ID=sa;Password=jack2008;";
using (DbConnection conn = new System.Data.OleDb.OleDbConnection(connString))
{
TestConnection(conn);
}
connString = "Provider=OraOleDb.Oracle.1;Data Source=xe;User ID=sa;Password=jack2008;";
using (DbConnection conn = new System.Data.OleDb.OleDbConnection(connString))
{
TestConnection(conn);
}
/* ms oracle provider, it is x86 version */
//connString = "Provider=msdaora;Data Source=xe;User ID=sa;Password=jack2008;";
//using (DbConnection conn = new System.Data.OleDb.OleDbConnection(connString))
//{
// TestConnection(conn);
//}
connString = "Data Source=xe;User ID=sa;Password=jack2008;";
using (DbConnection conn = new System.Data.OracleClient.OracleConnection(connString))
{
TestConnection(conn);
}
connString = "Data Source=xe;User ID=sa;Password=jack2008;";
using (DbConnection conn = new Oracle.DataAccess.Client.OracleConnection(connString))
{
TestConnection(conn);
}
string providerInvariantName;
providerInvariantName = "Oracle.DataAccess.Client";
connString = "Data Source=xe;User ID=sa;Password=jack2008;";
UseDbProviderFactoryGetConnection(providerInvariantName,connString);
providerInvariantName = "System.Data.OracleClient";
connString = "Data Source=xe;User ID=sa;Password=jack2008;";
UseDbProviderFactoryGetConnection(providerInvariantName, connString);
//connString = "Data Source=xe;User ID=sa;Password=jack2008;";
//DbProviderFactory factory = DbProviderFactories.GetFactory("");
//using (DbConnection conn = factory.CreateConnection())
//{
// conn.ConnectionString = connString;
// TestConnection(conn);
//}
Console.WriteLine("go");
Console.ReadLine();
}
private static void ShowAllDbProviderFactories()
{
/* all Db Provider Factory */
DataTable dtFactory = DbProviderFactories.GetFactoryClasses();
Console.WriteLine("------------------------------------");
foreach (DataRow row in dtFactory.Rows)
{
//for (int i = 0; i < dtFactory.Columns.Count; i++)
//{
// Console.Write("{0}\t", row[i]);
//}
Console.Write("{0}\t{1}", row[2], row[3]);
Console.WriteLine();
}
}
private static void UseDbProviderFactoryGetConnection(string providerInvariantName, string connString)
{
DbProviderFactory factory = DbProviderFactories.GetFactory(providerInvariantName);
using (DbConnection conn = factory.CreateConnection())
{
conn.ConnectionString = connString;
TestConnection(conn);
}
}
private static void TestConnection(DbConnection conn)
{
Console.WriteLine("------------------------------------");
string sql = "SELECT * FROM dept";
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
conn.Open();
using (IDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
Console.WriteLine("{0}\t{1}\t{2}", dr[0], dr[1], dr[2]);
}
}
conn.Close();
}
private static void AddParameter(DbCommand cmd, string paramName, object paramValue)
{
DbParameter p = cmd.CreateParameter();
p.ParameterName = paramName;
p.Value = paramValue ?? DBNull.Value;
cmd.Parameters.Add(p);
}
}
Oracle 数据库连接查询SQL语句
内连接(inner join)。
外连接:
全连接(full join)、左连接(left join)、右连接(right join)。
交叉联接(cross join)。
外连接与内连接不一样,外连接返回的查询结果中不仅包含符合条件的行,还包括左表(左外连接),右表(右外连接)或者两个连接表(全外连接)中的所有不符合条件的数据行。
1.左连接 (left [outer] join)
左外连接就是将左表的所有数据分别于右表的每条数据进行连接组合,返回的结果除内连接的数据外,还有左表中不符合条件的数据,并在右表的相应列中填上null值。
SQL语句如下:
select * from mt_pb_org o left join mt_pb_orgframe f on o.PB_ORGFRAMEID = f.PB_ORGFRAMEID;
等价语句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid = f.pb_orgframeid(+);
2.右连接 (right [outer] join)
右外连接就是将右表中的所有数据分别与左表的每条数据进行连接组合,返回的结果除了内连接的数据外,还有右表中不符合条件的数据,并在左表相应的列中填上null值。
SQL语句如下:
select * from mt_pb_org o right join mt_pb_orgframe on o.pb_orgframeid = f.pb_orgframeid;
等价语句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid(+) = f.pb_orgframeid;
3.全外连接 (full [outer] join)
全外连接就是将左表的所有数据分别与右表的每条数据进行连接组合,返回的结果除了内连接的数据外,还有两个表中不符合条件的数据,并在左表或者右表的相应列中填上null值。
SQL语句如下:
select * from mt_pb_org o full join mt_pb_orgframe o.pb_orgframeid = f.pb_orgframeid;
4.交叉连接(cross join)
交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
SQL语句如下:
select * from mt_pb_org o cross join mt_pb_orgframe f;