⑴ 我現在在做一個j2ee的系統,需要實現動態的創建資料庫,最好是使用sql文本文件創建
啊啊啊,0分?那我就提檔叢示悔歷你一點點行前櫻算了,動態創建的話,只有規矩的使用sql包獲取前台參數,運行傳入的語句
備份,恢復,刪除,則可以使用Runtime對象.的exec方法運行dos口令.
⑵ 如何用VB編寫可以動態生成資料庫和表的程序
那隻是創建表.還不算動態,動態要二維數組,表達行和列.
如: Dim myDB As DAO.Database
Set myDB = DAO.Workspaces(0).CreateDatabase("d:\md\lll.mdb", dbLangGeneral)
myDB.Execute "Create Table " & 表名 & "(" & "id Counter," & mm1 & " Text(10))"
'生成一個d:\md\lll.mdb資料庫存
myDB.Close
打斷它:. 表名=數組 欄位= combo2數組 欄位屬性= combo3數組
for..i=0 to combo2.ListCount-1'主工部分處理
myDB.Execute "Create Table " & 表名 & "(" & combo2.list(i) & combo3.list(i) ")"
next
這樣生成的表就是一個完全動態的表名,行 列 欄位都能自己定義的動態表,
調用查詢/刪/增/修改.都分別以數組
如:
cn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & ur
sq = "select * from " & uyu & " where " & stm(3) & "='" & Form2.Text1(3) & "'"
rs.Open sq, cn, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
MsgBox "" & stm(3) & "重復,不能添加數據", vbExclamation, "查詢"
rs.Close
cn.Close
查詢:
For i = 1 To rs.RecordCount
Set Fliv = Form1.ListView1.ListItems.Add()
Fliv.Text = rs.Fields(stm(1))
For r = 1 To sn - 1
Fliv.SubItems(r) = rs.Fields(stm(r + 1))
Next
rs.MoveNext
Next i
'sts = stm(1) & "='" & Form3.Text1(1) & "', " & stm(2) & "='" & Form3.Text1(2) & "', " & stm(4) & "='" & Form3.Text1(4)
For r = 1 To sn - 1
rn = rn + stm(r) & "='" & Form3.Text1(r) & "', "
Next
sts = rn & stm(sn) & "='" & Form3.Text1(sn)
' Form3.Text1(sn).Enabled = False
sq = "Update " & uyu & " set " & sts & "' where " & stm(3) & "='" & Form3.Text1(3) & "'"
cn.Execute (sq)
MsgBox "數據修改完成", vbInformation, "修改"
cn.Close
Set cn = Nothing
Form1.ListView1.ListItems.Clear '先清空表格里的數據
載入列表數據
設成公用變數,全換成數組之後,反面簡單明了..
只用提供表名,及欄位馬上就可以生成你需要資料庫..動態數組的交集就是所需字
記錄.查詢和調用都極為便利.更重要的是大大減小了資料庫負擔
⑶ 什麼叫動態資料庫,什麼叫靜態資料庫
動態資料庫是一個能夠被應用程序和其它的DLL調用的過程和函數的集合體,它裡麵包含的是公共代碼或資源。動態資料庫提供了一種方法,使進程可以調用不屬於其可執行代碼的函數雹喊。
靜態資料庫是一種用戶模塊。它提供了函數的完整的目標代碼。在靜態庫情況下,函數和數據被編譯進一個二進制文件,Visual C++的編譯器在處理程序代碼時洞肆首,將從靜態庫中恢復這些函數和數據並把他們和應用程序中的其他模塊組合在一起生成可執行文件。
(3)動態資料庫可以用哪些技術實現擴展閱讀:
動態裝入動態資料庫,要用到Windows的三個API函數,即Loadlibrary、Freelibrary和GetprocAddress函數。納數
1、Loadlibrary函數調用格式為:function loadlobrary (DdfileName:Pchar): THandle:。
2、、當不再需要一個動態資料庫時,應調用FreeLibrary函數將其釋放。
FreeLibrary函數調用格式:procere FreeLibrary (Libmole:THandle)。
3、用GetprocAddress函數把動態資料庫中函數的地址傳遞給程序中某個函數變數,再用該變數實現動態資料庫函數的調用。
GetprocAddress函數格式:function GetprocAddress (Libmole:THandle:procname:pchar):TFarProc:。
⑷ 如何使用jdbc或者使用hibernate動態創建一個資料庫
Hibernate 對有的資料庫,,,配置 一下就可以動態創建 。。。。。。。。。。。
⑸ 怎樣實現在程序中動態的連接資料庫
//動態庫和普通進程調用資料庫方式沒有任何區別,以下的程序兼容WINDOWS ODBC資料庫連接和LINUX MYSQL連接,是跨平台的。
#ifdef WIN32
#include <windows.h>
#include <odbcinst.h>
#include <sqlext.h>
#else
#include <mysql.h>
#include <unistd.h>
#define SQLHANDLE static MYSQL
#endif
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
SQLHANDLE hDBEnv, hDBC;
int DB_Open(char * dbcn, char * usr, char * pwd)
{
int r;
#ifdef WIN32
r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hDBEnv);
if(r) return 0;
r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,0);
if(r) return 0;
r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, &hDBC);
if(r) return 0;
r = SQLConnect(hDBC,
(unsigned char *)dbcn, strlen(dbcn),
(unsigned char *)usr, strlen(usr),
(unsigned char *)pwd, strlen(pwd));
return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;
#else
mysql_init(&hDBC);
MYSQL * rx = mysql_real_connect(
&hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);
if(!rx) return 0;
return 1;
#endif
}//end DB_Open
int DB_Exec(char * sql)
{
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));
SQLCloseCursor(hStatement);
SQLFreeHandle(SQL_HANDLE_STMT, hStatement);
hStatement = NULL;
#else
mysql_real_query (&hDBC, sql, strlen(sql));
#endif
return 1;
}//end DB_Exec
int DB_Close(void)
{
#ifdef WIN32
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);
#else
mysql_close(&hDBC);
#endif
return 1;
}//DB_Close()
#ifndef WIN32
typedef struct tagMySQLRecordset {
MYSQL_RES * hRecord;
void * * row;
int * size;
int cols;
} MYSQLRecordset;
⑹ C#動態讀取資料庫(c羅)
首先通過ado.net技術從資料庫獲取數據,將獲取到的數據綁做運橋定到前端顯示:悄廳
例://創建基於Windwos身份登錄驗證的SQLServer的連接字元串
stringstr_conn="server=.;DataBase=資料庫;Trusted_Connection=true";//integratedSecurity=true";
//1、用於從資料庫中獲取數據的查詢字純猛符串
stringstr_select="select需要的欄位from表";
//2、開始建立建立並打開連接
myconn=new(str_conn);
myconn.Open();
//3、創建連接,從資料庫中讀取數據
sql_Adapter=new(str_select,myconn);
//4、創建DataSet連接
DataSetdataset1=newDataSet();
//5、使用.Fill(DataSet_Name,index_name)方法將讀取的數據存入DataSet定義的名為任意名的Datatable中,其中任意名表用於數據的標識(索引)
sql_Adapter.Fill(dataset1,"任意名");
//6、將DataTable表中employee表的視圖賦值給控制項以便輸出
this..DataSource=dataset1.Tables["任意名"].DefaultView;
//7、關閉資料庫連接
myconn.Close();
⑺ 實現資料庫安全控制的常用方法和技術有哪些
這個問題很簡單!選D
三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
三級封鎖協議除防止了丟失修改和不讀「臟」數據外,還進一步防止了不可重復讀。
⑻ 資料庫集群技術有哪些
資料庫集群技術
1)提高資料庫處理速度的技術
目前有四種提高資料庫處理速度的辦法:
◆ 提高磁碟速度:這包括RAID和其他磁碟文件分段的處理。主要的思想是提高磁碟的並發度(多個物理磁碟存放同一個文件)。盡管實現方法各不相同,但是它們最後的目的都是提供一個邏輯資料庫的存儲映象。我們要評價的六個系統都能有效地利用這些技術。由於ICX已經有最大的磁碟冗餘度,RAID 磁碟系統的設置應該側重於速度,而不是數據冗餘。這樣磁碟利用的效益就會提高。
◆ 分散數據的存放:主要思想是利用多個物理伺服器來存放數據集的不同部分(一個資料庫表格分散到多個伺服器或者每個伺服器分管幾個內容不同的表格)。這些辦法不但可以擴展數據集(數據集的可擴性),而且使得不同的伺服器進行並行計算成為可能。例如,對於ORACLE的RAC來講,由於它是共享磁碟的體系結構,你只需要簡單地增加一個伺服器節點,RAC就能自動地將這節點加入到它的集群服務中去。RAC會自動地將數據分配到這節點上,並且會將接下來的資料庫訪問自動分布到合適的物理伺服器上,而不用修改應用程序。對於UDB來講,因為它是非共享磁碟的體系結構,因此就必須手工修改數據的分區,MSCS和ASE也是同樣的情況。MySQL也需要手工分區,並且是這幾種資料庫中支持分區的自動化程度最低的,也就是說,應用程序需要自己負責資料庫的分布式訪問。不管數據存放是如何實現的,分布式存放數據的缺點是對資料庫的可用性有負面影響。任何一台伺服器的損壞都會影響整個系統的可用性。但是,這是迄今為止各大數據庫廠商能提供的業界最好的資料庫集群技術了。ICX是一種基於中間件的資料庫集群技術,它對客戶端和資料庫伺服器都是透明的。因此,ICX可以用來集群幾個資料庫集群(一個邏輯資料庫),也可以用於集群幾個物理資料庫伺服器(來增強一個分管關鍵數據的物理伺服器)。
◆ 對稱多處理器系統:此技術的思想是利用多處理機硬體技術來提高資料庫的處理速度。但是,除了ICX,所有其它的資料庫集群技術只支持單一的可修改的邏輯資料庫。絕大部分的資料庫事務處理是磁碟密集型的,純計算負荷很小的,對稱多處器技術在資料庫上的應用的實際收益是很有限的。這也說明了為什麼實際應用中最多隻用了四個CPU的原因。所有的基於資料庫引擎的集群都支持這個技術,ICX對SMP技術是中性的,因為它能把多個資料庫伺服器集合在一起構成一個集群,也能將多個現存的資料庫集群集合在一起,構成集群的集群。
◆ 交易處理負載均衡:此技術的思想是在保持數據集內容同步的前提下,將只讀操作分布到多個獨立的伺服器上運行。因為絕大多數的資料庫操作是瀏覽和查詢,,如果我們能擁有多個內容同步的資料庫伺服器,交易負載均衡就具有最大的潛力(可以遠遠大於上面敘述的最多達四個處理器的對稱多處理器系統)來提高資料庫的處理速度,同時會具有非常高的數據可用性(真正達到5個9,即99.999%)。所有基於資料庫引擎的集群系統都只支持一個邏輯資料庫映象和一個邏輯或物理的備份。這個備份的主要目的是預防數據災難。因此,備份里的數據只能通過復制機制來更新,應用程序是不能直接更新它的。利用備份數據進行交易負載均衡只適用於一些非常有限的應用,例如報表統計、數據挖掘以及其它非關鍵業務的應用。只有ICX能夠做到同步復制多個資料庫伺服器從而達到在保持數據一直性前提下的真正的負載平衡。
上述所有技術在實際部署系統的時候可以混合使用以達到最佳效果。
2)提高資料庫可用性的技術
根據物理法則,提高冗餘度是提高資料庫可用性的唯一途徑。
提高資料庫冗餘度大致有四種方法:
◆ 硬體級的冗餘:主要思想是讓多處理機同時執行同樣的任務用以屏蔽瞬時和永久的硬體錯誤。有兩種具體的實現方法:構造特殊的冗餘處理機和使用多個獨立的資料庫伺服器。冗餘處理機的造價昂貴,效益很低。實際應用日漸減少。基於資料庫的集群系統都是用多個獨立的資料庫伺服器來實現一個邏輯資料庫,在任意瞬間,每台處理器運行的都是不同的任務。這種系統可以屏蔽單個或多個伺服器的損壞,但是因為沒有處理的冗餘度,每次恢復的時間比較長,它們需要把被損壞的服務進程在不同的伺服器上從新建立起來。ICX讓多個獨立的資料庫伺服器作同樣的處理。發現處理器問題時的切換不需要重建進程的狀態,所以故障屏蔽是極快的。
◆ 通訊鏈路級的冗餘:冗餘的通訊鏈路可以屏蔽瞬時和永久的通訊鏈路級的錯誤。基於資料庫引擎的集群系統有兩種結構:共享磁碟和獨立磁碟。RAC, MSCS 和 MySQL CS可以認為是共享磁碟的集群系統。UDB和ASE 是獨立磁碟的集群系統。共享磁碟集群系統對網路系統的要求很高,所以通訊的冗餘度最小。獨立磁碟集群系統可以把磁碟系統獨立管理,通訊冗餘度較高。 ICX的通訊鏈路級的冗餘度最高,因為它使用的是多個獨立的資料庫伺服器和獨立的磁碟系統。 ICX也可以用於共享磁碟系統。 但是冗餘度會相應降低。
◆ 軟體級的冗餘:由於現代操作系統和資料庫引擎的高度並發性,由競爭條件、死鎖、以及時間相關引發的錯誤占據了非正常停機服務的絕大多數原因。採用多個冗餘的運行資料庫進程能屏蔽瞬時和永久的軟體錯誤。基於資料庫引擎的集群系統都用多個處理器來實現一個邏輯資料庫,它們只能提供部分軟體冗餘,因為每一瞬間每個處理器執行的都是不同的任務。只有ICX可以提供最大程度的軟體級冗餘。
◆ 數據冗餘:有兩類冗餘數據集。
被動更新數據集:所有目前的數據復制技術(同步或非同步),例如磁碟鏡像(EMC的TimeFinder系列)、資料庫文件復制(如DoubleTake, Veritas and Legato)以及資料庫廠商自帶的資料庫備份工具都只能產生被動復制數據集。通常,為了實現復制功能,需要消耗掉主伺服器5%(非同步)到30%(同步)的處理能力。被動更新的數據一般只用於災難恢復.被動更新數據集還有兩個致命的問題:一旦主處理機故障造成數據損壞,被動更新的數據集也會被破壞。另外,和主動更新系統相比,被動更新系統對數據網路的帶寬要求更高。這是因為它缺少交易的信息,很多數據復制是盲目的。
主動更新數據集:這種數據集需要一台(或多台)獨立的備份資料庫伺服器來管理,由於這種數據集及時可用,它可以有多種用途,例如報表生成,數據挖掘,災難恢復甚至低質量負載均衡。 同樣地,這里也有同步和非同步兩種技術。
◆ 非同步主動復制數據集:這種技術是先把事務處理交給主伺服器來完成,然後這些事務處理再被串列地交給備份伺服器以執行同樣的操作來保證數據的一致性。這種技術生成的數據集和主數據集有一個時間差,所以僅適用於災難恢復、數據挖掘、報表統計以及有限的在線應用。所有的商用資料庫都支持非同步主動復制技術。這種辦法的難度在於復制隊列的管理上,這個隊列是用來屏蔽主伺服器和備份伺服器之間的速度差異的。因為主伺服器可以盡可能地利用所有軟硬體的並發性來處理並發的事務,而備份伺服器只能串列地復制,在高負荷事務處理的情況下,復制隊列經常可能溢出。因為沒有任何辦法來控制事務處理請求的速度,在高負荷事務處理的情況下,復制隊列只能經常性地重建。因為所有現代資料庫系統都支持熱備份和LOG SHIPPING。通過精心策劃,應該可以實現不關閉主伺服器而重建隊列。ICX也支持非同步主動復制. ICX的復制隊列的重建是通過ICX的自動數據同步軟體來完成的,所以不需要人工操作。
◆ 同步主動復制數據集:這種技術要求所有的並發事務處理在所有的資料庫伺服器上同時完成。一個直接的好處就是沒有了隊列的管理問題,同時也可以通過負載均衡實現更高的性能和更高的可用性。這種技術也有兩種完全不同的實現方法:完全串列化和動態串列化。完全串列化的事務處理來自於主資料庫的事務處理引擎,RAC, UDB, MSCS (SQL Server 2005) 和 ASE是用完全串列化並結合兩階段提交協議來實現的,這種設計的目標就是為了獲得一份可用於快速災難恢復的數據集。這種系統有兩個關鍵的問題。第一,兩階段提交協議是一種「ALL OR NOTHING」的協議。仔細研究兩階段提交協議後就能發現,為了獲取這備份數據集,事務處理的可用性會降低一半。第二,完全串列化的做法又引進了主-從資料庫伺服器速度不匹配的問題。強制同步造成整個系統的速度被降低到完全串列化的水平。相反,ICX-UDS採用了動態串列復制引擎。這設計可以充分利用多個獨立資料庫的處理能力。ICX避免了使用兩階段提交協議,因此一個事務處理只有在集群中的所有伺服器全都同時崩潰的情況下才會回滾。
為了防災,必須使用遠程網路。 所以我們在這里討論遠程數據復制的辦法。這里大概有四種辦法。
◆ 動態遠程非同步復制:這種辦法是指主伺服器通過遠程網串列地把交易復制到備份伺服器上。由於主-副之間的速度不匹配,隊列管理的問題就很突出。 由於遠程網的速度一般都比較慢,隊列溢出的概率大大增加。所有的集群系統都支持這種復制辦法,只是隊列管理的辦法不同而已。DM,FM和RAID都不能支持這種辦法。RAID只能在區域網內工作。
◆ 動態遠程同步復制.:這種辦法是指主伺服器通過遠程網並行地把交易復制備份伺服器上。只有ICX 具有這種能力。
◆ 靜態遠程非同步復制.:這種辦法是指通過遠程網把數據串列地復制(不通過資料庫伺服器)到異地。DM和FM支持這種復制辦法。因為串列處理和隊列管理的關系,這對於處理量大的系統不適用。但是這種復制辦法對應用是透明的,所有集群系統都可採用.
◆ 靜態遠程同步復制.:這種辦法也是指通過遠程網把數據串列地復制(不通過資料庫伺服器)到異地。不同的是,這里沒有隊列管理。取代隊列管理的是發送端的一個新的協議:每次發送都要等接受端確認復製成功。否則回滾。DM和FM都支持這種復制辦法。這種辦法只能在短距離范圍內工作, 大約5 英里光纖的樣子。如果超出這個距離范圍的話,顯然事務處理回滾的概率就會很高。但是這種復制辦法對應用是透明的,所有集群系統都可採用。
3)提高資料庫安全和數據集可擴展的技術
在提高資料庫安全性和數據集可擴性這兩方面,可以創新的空間是很小的。資料庫最常見的安全辦法是口令保護,要麼是分布式的,要麼是集中式的。在資料庫前面增加防火牆會增加額外的延遲,因此,盡管許多安全侵犯事件是來自於公司內部,但是資料庫防火牆還是很少被採用。如果資料庫集群技術是基於中間件技術實現的,就有可能在不增加額外延遲的情況下 ,在數據經過的路徑上實現防火牆功能。ICX完全實現了這種思想。
資料庫數據集的可擴性只能通過將數據分布到多個獨立的物理伺服器上來實現。為了彌補可用性的損失,ICX能被用來提高整個邏輯資料庫或者部分重要伺服器的處理速度,可用性和安全性。
⑼ 關系資料庫完整性有哪幾類 分別可以使用那些技術實現
關系資料庫完整性有域(列)、實體(行)、參照(引用)整性類。
1、域(列)完整性的技術實現:通常指數據的有效性,它包括欄位的值域、欄位的類型及欄位的有效規則等約束,它是由確定關系結構時所定義的欄位的屬性決定的。
2、實體(行)完整性的技術實現:關系中的主屬性值不能為Null且不能有相同值。
3、參照(引用)完整性的技術實現:對關系資料庫中建立關聯關系的數據表間數據參照引用的約束,也就是對外鍵游雀的約束。
數據完整性分析
資料庫採用多種方磨磨譽法來保證數據完整性,包括外鍵、約瞎段束、規則和觸發器。系統很好地處理了這四者的關系,並針對不同的具體情況用不同的方法進行,相互交叉使用,相補缺點。
從外界輸入的,而數據的輸入由於種種原因,會發生輸入無效或錯誤信息。保證輸入的數據符合規定,成為了資料庫系統,尤其是多用戶的關系資料庫系統首要關注的問題。
⑽ 如何做一個動態的簡單的資料庫
用ASP+Accesss可以非常輕松的搞定,隨便找點教程看看即可。