當前位置:首頁 » 數據倉庫 » 不同資料庫數據適配方法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

不同資料庫數據適配方法

發布時間: 2022-11-29 20:55:50

① MSsql 同一伺服器不同資料庫間表數據同步,有什麼好的方法,分兩種吧,即時的和延遲的

同一伺服器的不同資料庫間可以直接訪問,比如兩個資料庫DB1,DB2
當前連接的是DB1,可以用 select * from db2.dbo.table1 來訪問DB2的表。 其中dbo是資料庫所有者,默認為dbo。 還需要連接DB1的用戶對兩個資料庫都有許可權。

關於同步,延遲的方法比較單一,做一個存儲,加在作業里,定時調用即可。
即時的可以分兩種思路,第一可以用觸發器的方式,在db1中需要同步的表裡,創建觸發器,當有數據操作的時候觸發,同步數據。
第二種思路,是前台事務操作db1的數據表的時候,同時寫db2的數據表,兩個操作放在同一個事務中。
兩種方法各有好處,個人推薦第一種。
以上思路基於sql server 2005,之後的版本了解不夠多,不知道有沒有出什麼更好的工具啥的。

② c#連接資料庫的幾種方式

第一種方法:直接通過資料庫的用戶名、密碼等連接到資料庫進行資料庫連接。
如:private void sqlconn()
{
SqlConncetion conn = new SqlConnection("SERVER=.;DATABASE=pubs;PWD=;UID=sa;");
SqlConncetion cmd = new SqlCommand("SELECT*FROM [table]",cmd);
DataSet ds = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(ds);
}
其中SqlConnection 是資料庫連接類,SqlDataAdapter是數據適配器,SqlCommand是數據操作命令,即執行SQL語言。
說明,使用SqlConnection進行資料庫的連接,然後使用SqlCommand定義SQL查詢語句,再定義一個DataSet存儲查詢的結果,而SqlDataAdapter是資料庫和DataSet的轉換橋梁。

第二種方法:通過ConfigurationManager.ConnectionString獲取資料庫的配置信息。進行資料庫的連接。
如:public static int ExcuteNonQuery(string sql,params SqlParameter[] parameters)
{
string connStr = configurationManager.ConnectionStrings["ConnStr"].ConncetionString;
using(SqlConncetion conn=new SqlConnection(connStr))
{
conn.open();
using(SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach(SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteNonQuery();
}
}
}
說明:
(1) 通過string connStr=ConfigurationManager.ConnectionString[「ConnStr」].ConnectionString;獲得資料庫連接的一些配置信息,即「數據源」、「資料庫名」、「用戶名」、「密碼」,將這些信息都保存在connStr中。
(2) SqlConnection conn = new SqlConnection(connStr);創建一個資料庫連接對象conn,連接資料庫用conn.Open();
(3) SqlCommand cmd = new SqlCommand(「Select * Form [表]」,conn);
或者string sql = 「Select * From [表]」;
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;這樣就把訪問資料庫的SQL語句存到了cmd中
(4) 建立SqlDataAdapter對象和DataSet對象
DataSet myDataSet = new DataSet();創建DataSet對象,
SqlDataAdapter myDataAdapter = new SqlDataAdapter(cmd);創建數據適配器對象。
(5) 填充DataSet:myDataAdapter.Fill(myDataSet);其實SqlDataAdapter數據適配器起的就是一個連接資料庫和數據集(DataSet)的橋梁作用,把對資料庫操作的SQL語句得到的結果傳到SqlDataAdapter對象中,在通過SqlDataAdapter.Fill(DataSet)方法,將結果填充到DataSet中。
第三種方法:用工廠方法
DbProviderFactory m_dbProviderFactory = DbProviderFactories.GetFacory(ConfigurationManager.ConnectionString[「ConStr」].ProviderName);//獲取工廠
DbConnection conn = m_dbProviderFactory.CreateConncetion();//創建連接
DbCommand cmd = m_dbProviderFactory.CreateCommand();//創建命令
cmd.Connection = conn;
cmd.CommandText = strSql;
cmd.CommandType = CommandType.Text;
DbDataAdapter dapter = m_dbProviderFactory.CreateDataAdapter();//創建適配器
dapter.SelectCommand = cmd;
dapter.Fill(DataSet ds = new DataSet());//填充
return ds;
說明:
上面的語句中用ConfigurationManager.ConnectionString[「ConStr」].ProviderName獲取了當前資料庫的名稱,因此可以適用於任何資料庫,如果這樣寫,就是不同的資料庫使用不同的語言:
SqlServer:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
Oracle:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
ODBC:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.Odbc");
Access:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");

③ SqlSugar怎樣適配pgsql

連接資料庫 ThinkPHP內置了抽象資料庫訪問層,把不同的資料庫操作封裝起來,我們只需要使用公共的Db類進行操作,而無需針對不同的資料庫寫不同的代碼和底層實現,Db類會自動調用相應的資料庫適配器來處理。目前的資料庫包括Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase以及PDO的支持,如果應用需要使用資料庫,必須配置資料庫連接信息,資料庫的配置文件有多種定義方式:
第一種 在項目配置文件裡面定義
return array(
'DB_TYPE'=> 'mysql',
'DB_HOST'=> 'localhost',
'DB_NAME'=>'thinkphp',
'DB_USER'=>'root',
'DB_PWD'=>'',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'think_',
// 其他項目配置參數………
);
系統推薦使用該種方式,因為一般一個項目的資料庫訪問配置是相同的。該方法系統在連接資料庫的時候會自動獲取,無需手動連接。
可以對每個項目定義不同的資料庫連接信息,還可以在調試配置文件(Conf/debug.php)裡面定義調試資料庫的配置信息,如果在項目配置文件和調試模式配置文件裡面同時定義了資料庫連接信息,那麼在調試模式下面後者生效,部署模式下面前者生效。
第二種 使用DSN方式在初始化Db類的時候傳參數
$db_dsn = 「mysql://username:passwd@localhost:3306/DbName」;
$db = new Db($db_dsn);
該方式主要用於在控制器裡面自己手動連接資料庫的情況,或者用於創建多個資料庫連接。
第三種 使用數組傳參數
$DSN = array(
'dbms' => 'mysql',
'username' => 'username',
'password' => 'password',
'hostname' => ; 'localhost',
'hostport' => '3306',
'database' => 'dbname'
);
$db = new Db($DSN);
該方式也是用於手動連接資料庫的情況,或者用於創建多個資料庫連接。
第四種 在模型類裡面定義
protected $connection = array(
'dbms' => 'mysql',
'username' => 'username',
'password' => 'password',
'hostname' => 'localhost',
'hostport' => '3306',
'database' => 'dbname'
);
// 或者使用下面的定義
protected $connection = 」mysql://username:passwd@localhost:3306/DbName」;
如果在某個模型類裡面定義了connection屬性,則在實例化模型對象的時候,會使用該資料庫連接信息進行資料庫連接。通常用於某些數據表位於當前資料庫連接之外的其它資料庫。
ThinkPHP並不是在一開始就會連接資料庫,而是在有數據查詢操作的時候才會去連接資料庫。額外的情況是,在系統第一次操作模型的時候,框架會自動連接資料庫獲取相關模型類的數據欄位信息,並緩存下來。
(欄位緩存目錄:Runtime/Data/_fields)
ThinkPHP支持PDO方式,如果要使用PDO方式連接資料庫,可以參考下面的設置。
我們以項目配置文件定義為例來說明:
return array(
'DB_TYPE'=> 'pdo',
// 注意DSN的配置針對不同的資料庫有所區別 請參考PHP手冊PDO類庫部分
'DB_DSN'=> 'mysql:host=localhost;dbname=think',
'DB_USER'=>'root',
'DB_PWD'=>'',
'DB_PREFIX'=>'think_',
// 其他項目配置參數………
);
使用PDO方式的時候,要注意檢查是否開啟相關的PDO模塊。DB_DSN參數僅對PDO方式連接才有效。

④ sqlserver不同資料庫怎麼讓數據實時同步

可以使用資料庫比較與同步工具DBSync,具體做法:先建立一個任務:以A為同步之源,以B為同步之目標,同步方式設置為增量同步,以後,只要A發生增刪改,就會同步更新至B。