- 類型:數據庫類大小: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位操作系統(tǒng),需要安裝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)。
交叉聯(lián)接(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;