網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
C#使用ADO.Net連接數(shù)據(jù)庫(kù)與DbProviderFactory實(shí)現(xiàn)多數(shù)據(jù)庫(kù)訪問_C#教程
作者:springsnow ? 更新時(shí)間: 2022-07-06 編程語(yǔ)言一、ADO.Net數(shù)據(jù)庫(kù)連接字符串
1、OdbcConnection(System.Data.Odbc)
(1)SQL Sever
標(biāo)準(zhǔn)安全:" Driver={SQL Server}; Server=Aron1; Database=pubs; Uid=sa; Pwd=asdasd; "
信任的連接:" Driver={SQL Server}; Server=Aron1; Database=pubs; Trusted_Connection=yes; "
(2)SQL Native Client ODBC Driver(>=SQL Server 2005)
標(biāo)準(zhǔn)安全" Driver={SQL Native Client}; Server=Aron1; Database=pubs; UID=sa; PWD=asdasd; "
信任的連接" Driver={SQL Native Client}; Server=Aron1; Database=pubs; Trusted_Connection=yes; "
--Integrated Security=SSPI 等同于Trusted_Connection=yes
(3)Oracle:
新版本:"Driver={Microsoft ODBC for Oracle}; Server=OracleServer.world; Uid=Username; Pwd=asdasd; "
舊版本:"Driver={Microsoft ODBC Driver for Oracle}; ConnectString=OracleServer.world; Uid=myUsername; Pwd=myPassword; "
(4)Access:
標(biāo)準(zhǔn)安全:"Driver={Microsoft Access Driver (*.mdb)}; Dbq=C:\mydatabase.mdb; Uid=Admin; Pwd=; "
2、OleDbConnection(System.Data.OleDb)
(1)SQL Sever
標(biāo)準(zhǔn)安全:" Provider=sqloledb; Data Source=Aron1; Initial Catalog=pubs; User Id=sa; Password=asdasd; "
信任的連接:" Provider=sqloledb; Data Source=Aron1; Initial Catalog=pubs; Integrated Security=SSPI; "?
(use serverName\instanceName as Data Source to use an specifik SQLServer instance, only SQLServer2000)
(2)SQL Native Client OLE DB Provider(>=SQL Server 2005)
標(biāo)準(zhǔn)安全:" Provider=SQLNCLI; Server=Aron1; Database=pubs; UID=sa; PWD=asdasd; "
信任的連接:" Provider=SQLNCLI; Server=Aron1; Database=pubs; Trusted_Connection=yes; "
--Integrated Security=SSPI 等同于Trusted_Connection=yes
(3)Oracle:
標(biāo)準(zhǔn)安全:"Provider=msdaora; Data Source=MyOracleDB; User Id=UserName; Password=asdasd; "
This one's from Microsoft, the following are from Oracle
標(biāo)準(zhǔn)安全:"Provider=OraOLEDB.Oracle; Data Source=MyOracleDB; User Id=Username; Password=asdasd; "
信任的連接:"Provider=OraOLEDB.Oracle; Data Source=MyOracleDB; OSAuthent=1; "
(4)Access:
標(biāo)準(zhǔn)安全:
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=\somepath\mydb.mdb; User Id=admin; Password=; "
3、SqlConnection(Syste.Data.SqlClient) SQL專用
標(biāo)準(zhǔn)安全:
" Data Source=Aron1; Initial Catalog=pubs; User Id=sa; Password=asdasd; "?
- 或者 -" Server=Aron1; Database=pubs; User ID=sa; Password=asdasd; Trusted_Connection=False"
信任的連接:" Data Source=Aron1; Initial Catalog=pubs; Integrated Security=SSPI; "?
- 或者 -" Server=Aron1; Database=pubs; Trusted_Connection=True; "
–(use serverName\instanceName as Data Source to use an specifik SQLServer instance, 僅僅適用于SQLServer2000)
4、OracleConnection(System.Data.OracleClient\Oracle.ManagedDataAccess.Client) Oracle專用
標(biāo)準(zhǔn)安全:"Data Source=MyOracleDB; Integrated Security=yes; "
--This one works only with Oracle 8i release 3 or later
指定用戶名和密碼:"Data Source=MyOracleDB; User Id=username; Password=passwd; Integrated Security=no; "
--This one works only with Oracle 8i release 3 or later
指定主機(jī):"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=192.168.115.33) (PORT=1521)))(CONNECT_DATA=(SERVICE_NAME= testDemo))); User Id=oracle_test; Password=oracle"
其中Oracle數(shù)據(jù)庫(kù)服務(wù)器IP:192.168.115.33
ServiceName:testDemo
用戶名:oracle_test
密碼:oracle
二、利用DbProviderFactory創(chuàng)建各種ADO.Net對(duì)象
DbProviderFactory是一個(gè)工廠類,工廠類的作用提供其他一系列相互之間有關(guān)系的類。在這里,DbProviderFactory就自動(dòng)生成了包括DbConnection、DbCommand、 DbDataAdapter等一系列數(shù)據(jù)庫(kù)操作的相關(guān)類。
1、配置文件ConnectionString節(jié):
<configuration> <connectionStrings> <add name="default" connectionString="server=localhost; user id=sa; password=******; database=northwind" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration>
2、利用DbProviderFactory類自動(dòng)查找數(shù)據(jù)庫(kù)的驅(qū)動(dòng)
ConnectionStringSettings settings = ConfigurationManager.ConnectionStrings["default"]; DbProviderFactory provider = DbProviderFactories.GetFactory(settings.ProviderName);
3、利用DbProviderFactory類實(shí)例創(chuàng)建各種ADO.Net對(duì)象。
using (DbConnection conn = provider.CreateConnection()) { conn.ConnectionString = settings.ConnectionString; conn.Open(); DbCommand cmd = conn.CreateCommand(); cmd.CommandText = "Select top 10 * From ShortTermBill"; //使用DbDataAdapter DbDataAdapter da = provider.CreateDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds); da.Dispose(); Console.WriteLine(ds.Tables[0].Rows[0]["BillCode"]); //使用DbDataReader DbDataReader reader = cmd.ExecuteReader() while (reader.Read()) { Console.WriteLine(reader.GetString(0)); } conn.Close(); }
三、利用DbConnection獲取數(shù)據(jù)庫(kù)架構(gòu)信息
SQL Server 架構(gòu)集合 - ADO.NET | Microsoft 官方文檔
class Program { static void Main() { string connectionString = GetConnectionString(); using (SqlConnection connection = new SqlConnection(connectionString)) { // Connect to the database then retrieve the schema information. connection.Open();string[] columnRestrictions = new String[4]; // For the array, 0-member represents Catalog; 1-member represents Schema; // 2-member represents Table Name; 3-member represents Column Name. // Now we specify the Table_Name and Column_Name of the columns what we want to get schema information. columnRestrictions[2] = "Device"; DataTable departmentIDSchemaTable = connection.GetSchema("Columns", columnRestrictions); ShowColumns(departmentIDSchemaTable); } } private static string GetConnectionString() { // To avoid storing the connection string in your code, // you can retrieve it from a configuration file. return "server=10.126.64.1;Database=TPM;user=it;pwd=;ApplicationIntent=ReadOnly;MultiSubnetFailover=True"; } private static void ShowColumns(DataTable columnsTable) { var selectedRows = from info in columnsTable.AsEnumerable() select new { TableCatalog = info["TABLE_CATALOG"], TableSchema = info["TABLE_SCHEMA"], TableName = info["TABLE_NAME"], ColumnName = info["COLUMN_NAME"], DataType = info["DATA_TYPE"], ORDINAL_POSITION = info["ORDINAL_POSITION"], COLUMN_DEFAULT = info["COLUMN_DEFAULT"], IS_NULLABLE = info["IS_NULLABLE"], CHARACTER_MAXIMUM_LENGTH = info["CHARACTER_MAXIMUM_LENGTH"], NUMERIC_PRECISION = info["NUMERIC_PRECISION"], NUMERIC_SCALE = info["NUMERIC_SCALE"], DATETIME_PRECISION = info["DATETIME_PRECISION"], }; Console.WriteLine("{0,-15},{1,-15},{2,-15},{3,-15},{4,-15},{5,-15},{6,-15},{7,-15},{8,-15},{9,-15},{10,-15},{11,-15}", "TableCatalog", "TABLE_SCHEMA", "表名", "列名", "數(shù)據(jù)類型", "字段原始順序", "列默認(rèn)值", "是否可空", "字符串最大長(zhǎng)度", "數(shù)字精度", "數(shù)字小數(shù)點(diǎn)位數(shù)", "日期精度" ); foreach (var row in selectedRows) { Console.WriteLine("{0,-15},{1,-15},{2,-15},{3,-15},{4,-15},{5,-15},{6,-15},{7,-15},{8,-15},{9,-15},{10,-15},{11,-15}", row.TableCatalog, row.TableSchema, row.TableName, row.ColumnName, row.DataType, row.ORDINAL_POSITION, row.COLUMN_DEFAULT, row.IS_NULLABLE , row.CHARACTER_MAXIMUM_LENGTH, row.NUMERIC_PRECISION, row.NUMERIC_SCALE, row.DATETIME_PRECISION); } } }
原文鏈接:https://www.cnblogs.com/springsnow/p/9433920.html
相關(guān)推薦
- 2022-09-16 C#中Path類的使用方法_C#教程
- 2022-11-30 AMP?Tensor?Cores節(jié)省內(nèi)存PyTorch模型詳解_python
- 2022-06-25 JetBrains公司三大編輯器迭代循環(huán)模板快捷鍵詳解_相關(guān)技巧
- 2022-05-03 ASP.NET?Core基于滑動(dòng)窗口實(shí)現(xiàn)限流控制_實(shí)用技巧
- 2022-06-07 redis復(fù)制有可能碰到的問題匯總_Redis
- 2022-12-14 深入了解Rust中trait的使用_Rust語(yǔ)言
- 2022-06-29 C語(yǔ)言詳細(xì)講解常用字符串處理函數(shù)_C 語(yǔ)言
- 2022-02-17 springBoot自定義場(chǎng)景啟動(dòng)器starter
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支