C# 连接数据库(ODBC、Oledb、Oracle)
ODBC
OdbcConnection.ConnectionString
OleDbConnection.ConnectionString
OracleClient
OracleConnection.ConnectionString
- ODBC
开放数据库连接(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分。ODBC可以连接多种数据库。
可能的连接字符串:
/* 可能的连接字符串: "Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;" "Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes" "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\Northwind.mdb" "Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls" "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin" "DSN=dsnname" */
连接实例:
string connStr = string.Format("Driver={2}Microsoft Access Driver (*.mdb){3};DBQ={0};PWD={1};", mdbPath, dbPassWord,"{","}");//连接本地带密码的mdb connStr = string.Format("Driver={2}Oracle in OraDb11g_home1{3};Server=orcl;Persist Security Info=False;Trusted_Connection=Yes;UID={0};PWD={1}", "aqgis", "1", "{", "}");//连接oracle数据库aqgis,密码1----Oracle in OraDb11g_home1为驱动名称 OdbcConnection OdbcConn = new OdbcConnection(connStr); OdbcConn.Open(); OdbcDataAdapter pAdapter = new OdbcDataAdapter("select * from MDARESULT", OdbcConn); DataSet pOdbcDataset = new DataSet(); pAdapter.Fill(pOdbcDataset); OdbcConn.Close();
其中Oracle in OraDb11g_home1为驱动名称,如下图:
也就是说,在上图中所有安装的驱动程序,都可以通过ODBC进行调用。特别注意,驱动的名称必须与系统写的完全一致,空格也不可以省略!!
下面的例子都是打开同一个mdb实例,使用了不同的驱动程序,方法:
string pDriverName = "Driver do Microsoft Access (*.mdb)";//空格不可以省略 pDriverName = "Microsoft Access Driver (*.mdb)";//空格不可以省略 pDriverName = "Microsoft Access Driver (*.mdb, *.accdb)";//空格不可以省略 pDriverName = "Microsoft Access-Treiber (*.mdb)";//空格不可以省略 connStr = string.Format("Driver={0}{1}{2};DBQ={3};PWD={4};", "{", pDriverName, "}", mdbPath, dbPassWord);//本地;mdbPath-文件路径;dbPassWord-mdb文件密码,没有可去掉。 OdbcConnection OdbcConn = new OdbcConnection(connStr); OdbcConn.Open(); OdbcDataAdapter pAdapter = new OdbcDataAdapter("select * from MDARESULT", OdbcConn); DataSet pOdbcDataset = new DataSet(); pAdapter.Fill(pOdbcDataset); OdbcConn.Close();
- Oledb
可能的连接字符串:
"Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=Yes" "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb" "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI"
例子:
//带密码的mdb-两种写法OLEDB.4.0 //string connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source={0};User Id=Admin;PassWord={1};", mdbPath, dbPassWord); string connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source={0};Jet oledb:database password={1};", mdbPath, dbPassWord); //OLEDB.12.0(可打开.accdb) //string connstr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0 ;Data Source={0};Jet oledb:database password={1};", mdbPath, dbPassWord); OleDbConnection pConn = new OleDbConnection(connstr); pConn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter(); DataSet db_filePath = new System.Data.DataSet(); adapter.SelectCommand = new OleDbCommand(sqlstr, pConn); adapter.Fill(db_filePath);
Oledb也可以像ODBC那样,使用不同的驱动连接数据库,只需要修改驱动提供名称(Provide)即可。
新建文本文档,将文本文档重命名为:“打开数据链接属性对话框(Oledb驱动列表).udl”,双击该文件即可打开下面的对话框:
列表中的驱动程序都可以用来进行数据库操作!
- Oracle
例子:
string connectionString = string.Format("Data Source={0};User Id={1};Password={2};", "orcl", "aqgis", "1");//orcl实例名,aqgis用户名 using (System.Data.OracleClient.OracleConnection connection = new System.Data.OracleClient.OracleConnection(connectionString)) { connection.Open(); System.Data.OracleClient.OracleDataAdapter pAda = new System.Data.OracleClient.OracleDataAdapter("select * from MDARESULT", connection); DataSet pOracleDt = new DataSet(); pAda.Fill(pOracleDt); }