ODBC Vs. OleDB

  • 1645
  • 0

ODBC Vs. OleDB

兩個不同的協定在資料讀取上是有很大的差異處
先秀一下輸出結果的差異處

-------------------- ODBC 開啟 --------------------
資料數量:56
欄位數量:11

花費總時間:78.1155毫秒
======================================================
-------------------- OleDB 開啟 --------------------
資料數量:56
欄位數量:11

花費總時間:15.6231毫秒

 

String strServer = "127.0.0.1";
String strDBName = "MS";
String strUserID = "sa";
String strPasswd = "1qaz2wsx";

// 設定SQL語法
String strSQL = "SELECT * FROM MSData";

// 碼表計算Load時間
DateTime time_start = DateTime.Now;//計時開始 取得目前時間

// 1.設定連結字串
System.Data.Odbc.OdbcConnection OdbcConn = new System.Data.Odbc.OdbcConnection();
OdbcConn.ConnectionString = "Driver={SQL Server}; Server=" + strServer + ";Database=" + strDBName + ";User ID=" + strUserID + "assword=" + strPasswd;

// 2.設定連接指令
System.Data.Odbc.OdbcCommand OdbcComm = new System.Data.Odbc.OdbcCommand();

// 3.開啟連線
if (OdbcConn.State == ConnectionState.Closed) { OdbcConn.Open(); } else { OdbcConn.Close(); }

// 4.設定DataSet 為 DS變數
System.Data.DataSet OdbDS = new DataSet();

// 5.設定Adapter為 OdbcDA
System.Data.Odbc.OdbcDataAdapter OdbcDA = new System.Data.Odbc.OdbcDataAdapter(strSQL, OdbcConn);

// 將所有所有資料連接設定成OdbDS
OdbcDA.Fill(OdbDS);

// 關閉連線
OdbcConn.Close();

// 6.顯示出資料
Console.WriteLine(" -------------------- ODBC 開啟 -------------------- ");
Console.WriteLine("資料數量:" + OdbDS.Tables[0].Rows.Count);
Console.WriteLine("欄位數量:" + OdbDS.Tables[0].Columns.Count);
Console.WriteLine("");

for (int i = 0; i < OdbDS.Tables[0].Rows.Count; i++)
{
	for (int j = 0; j < OdbDS.Tables[0].Columns.Count; j++)
	{
		//Console.Write(OdbDS.Tables[0].Rows[j].ToString());
		//Console.Write(OdbDS.Tables[0].Rows["欄位名稱"].ToString());
		//讀取每一筆資料
	}
	//Console.WriteLine();
}

DateTime time_end = DateTime.Now;//計時結束 取得目前時間
Console.WriteLine("花費總時間:" + ((TimeSpan)(time_end - time_start)).TotalMilliseconds.ToString() + "毫秒");

Console.WriteLine("======================================================");

// ============================== 分隔線 ==============================

// 碼表計算Load時間
time_start = DateTime.Now;//計時開始 取得目前時間

// 1.設定連結字串
System.Data.OleDb.OleDbConnection OleDBConn = new System.Data.OleDb.OleDbConnection();
OleDBConn.ConnectionString = "rovider=sqloledb; Data Source=" + strServer + "; Initial Catalog=" + strDBName + "; User Id=" + strUserID + "; Password=" + strPasswd;

// 2.設定連接指令
System.Data.OleDb.OleDbCommand OleDB = new System.Data.OleDb.OleDbCommand();

// 3.開啟連線
if (OleDBConn.State == ConnectionState.Closed) { OleDBConn.Open(); } else { OleDBConn.Close(); }

// 4.設定DataSet 為 DS變數
System.Data.DataSet OleDBDS = new DataSet();

// 5.設定Adapter為 OleDBDA
System.Data.OleDb.OleDbDataAdapter OleDBDA = new System.Data.OleDb.OleDbDataAdapter(strSQL, OleDBConn);

// 將所有所有資料連接設定成OleDBDS
OleDBDA.Fill(OleDBDS);

// 關閉連線
OleDBConn.Close();

// 6.顯示出資料
Console.WriteLine(" -------------------- ODBC 開啟 -------------------- ");
Console.WriteLine("資料數量:" + OleDBDS.Tables[0].Rows.Count);
Console.WriteLine("欄位數量:" + OleDBDS.Tables[0].Columns.Count);
Console.WriteLine("");

for (int i = 0; i < OleDBDS.Tables[0].Rows.Count; i++)
{
	for (int j = 0; j < OleDBDS.Tables[0].Columns.Count; j++)
	{
		//Console.Write(OleDBDS.Tables[0].Rows[j].ToString());
		//Console.Write(OleDBDS.Tables[0].Rows["欄位名稱"].ToString());
		//讀取每一筆資料
	}
	//Console.WriteLine();
}

time_end = DateTime.Now;//計時結束 取得目前時間
Console.WriteLine("花費總時間:" + ((TimeSpan)(time_end - time_start)).TotalMilliseconds.ToString() + "毫秒");

Console.ReadLine();