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

資料庫靜態方法

發布時間: 2022-12-25 23:05:31

A. 請教一個java中用靜態方法訪問資料庫的問題。

是這樣的,
訪問資料庫的方式寫成靜態,並不是所有的都是靜態。

即,把資料庫連接寫成靜態。
而查詢、刪除、修改不能寫成靜態。

這樣後,所有的用戶,連接是同一個。

B. 什麼叫動態資料庫,什麼叫靜態資料庫

動態資料庫是一個能夠被應用程序和其它的DLL調用的過程和函數的集合體,它裡麵包含的是公共代碼或資源。動態資料庫提供了一種方法,使進程可以調用不屬於其可執行代碼的函數。

靜態資料庫是一種用戶模塊。它提供了函數的完整的目標代碼。在靜態庫情況下,函數和數據被編譯進一個二進制文件,Visual C++的編譯器在處理程序代碼時,將從靜態庫中恢復這些函數和數據並把他們和應用程序中的其他模塊組合在一起生成可執行文件。

(2)資料庫靜態方法擴展閱讀:

動態裝入動態資料庫,要用到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:。

C. 在C#程序中連接資料庫不能用公共靜態的方法是怎樣的

不要設一個全局靜態連接對象,所有資料庫連接都使用這一個連接對象,那樣性能會很差。
資料庫連接對象隨用隨創建,用完就盡快關閉,如果短時間內有多個資料庫操作執行,那麼可以在這幾個操作間共享連接對象。

D. 資料庫增刪改查用靜態方法實現好還是實例方法實現好

java連接資料庫,你可以用一些框架,比如hibernate,iBATIS等,這樣方便一點,否則你就用JDBC吧,自己寫sql語句:
JDBC連接資料庫
•創建一個以JDBC連接資料庫的程序,包含7個步驟:
1、載入JDBC驅動程序:
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),
這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
try{
//載入MySql的驅動類
Class.forName("com.mysql.jdbc.Driver") ;
}catch(ClassNotFoundException e){
System.out.println("找不到驅動程序類 ,載入驅動失敗!");
e.printStackTrace() ;
}
成功載入後,會將Driver類的實例注冊到DriverManager類中。
2、提供JDBC連接的URL
•連接URL定義了連接資料庫時的協議、子協議、數據源標識。
•書寫形式:協議:子協議:數據源標識
協議:在JDBC中總是以jdbc開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(MySql的連接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
3、創建資料庫的連接
•要連接資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,
該對象就代表一個資料庫的連接。
•使用DriverManager的getConnectin(String url , String username ,
String password )方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和
密碼來獲得。
例如:
//連接MySql資料庫,用戶名和密碼都是root
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;
String password = "root" ;
try{
Connection con =
DriverManager.getConnection(url , username , password ) ;
}catch(SQLException se){
System.out.println("資料庫連接失敗!");
se.printStackTrace() ;
}
4、創建一個Statement
•要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3
種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
具體的實現方式:
Statement stmt = con.createStatement() ;
PreparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt =
con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句
,返回一個結果集(ResultSet)對象。
2、int executeUpdate(String sqlString):用於執行INSERT、UPDATE或
DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的
語句。
具體實現的代碼:
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
int rows = stmt.executeUpdate("INSERT INTO ...") ;
boolean flag = stmt.execute(String sql) ;
6、處理結果
兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
• ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些
行中數據的訪問。
• 使用結果集(ResultSet)對象的訪問方法獲取數據:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比較高效
}
(列是從左到右編號的,並且從列1開始)
7、關閉JDBC對象
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲
明順序相反:
1、關閉記錄集
2、關閉聲明
3、關閉連接對象
if(rs != null){ // 關閉記錄集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 關閉聲明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 關閉連接對象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}

E. 如何將資料庫中的內容生成靜態頁面

現在很多看似是靜態頁面其實是使用了URL重定向組件 Isapirewrite這個東西,裡面一樣的是動態的頁面。
如果非要生成靜態頁面可以寫一個生成的母版頁再載入資料庫數據生成。

首先在模板頁里把頁面布局啊什麼的都做好。然後在後台頁面里提取該頁面,再把資料庫數據寫入到裡面的對應標簽里。最後再生成一個新的頁面就行了。

F. 如何維護資料庫中的靜態表

我認為在任何應用程序、系統的資料庫中或多或少都會有一些靜態表用來存放系統中一些默認的值,比如說界面上的一些field信息、一些數據模板、界面上的選項設置等等。我們不可能把這些東西都hard code到代碼中去,所以必然需要這些靜態的數據表來存放這些信息。可能你會覺得手動去維護這些靜態表就挺好,但是我認為在任何情況下我們都不應該手動的去修改資料庫中的數據,這樣可能會導致臟數據或者其他未知問題。設想一下,如果你的系統有開發和測試兩個資料庫,又同時需要支持SQL-SERVER和ORACLE兩種資料庫,那麼你就需要維護四個資料庫,當資料庫數量增加手動維護明顯是不可能的一件事情。

我認為可以通過將靜態數據表中的數據保存在一些文件中,然後通過一些工具將這些文件導入到各個資料庫中,同時還可以將這些文件放在版本控制庫里,這樣就可以追蹤到每一個對靜態表的修改。我設想了一下這個簡單的模型。

如上圖所示,更新工具去讀配置文件,然後根據配置文件將靜態表文件中的數據更新到指定的一些資料庫中去。靜態表文件中包含了靜態表的一些基本數據,資料庫配置包含了一些資料庫的鏈接信息。而配置文件則是關鍵,它包含了一些靜態表文件和資料庫配置文件,同時也應該包含靜態表文件與資料庫中表的映射關系。

我覺得通過這種方式可以比較好的控制資料庫中靜態表,如果是應用程序,在部署的時候只要配置一些資料庫和資料庫文件,應該就能很快的將靜態數據導入資料庫表。

G. 資料庫增刪改查用靜態方法實現好還是實例方

不建議使用靜態的,還是每次 new 一個出來比較踏實。

靜態的在任何一個地方崩潰掉,全局就OVER了。

H. 如何提交jap表單數據插入數mysql據庫factory有靜態方法

1.將選中的數據快兒拷貝到一個TXT文本文件中(記得把後面的空格消掉。。否則導入資料庫後會有對應的空行),假如存到「D:\data.txt」這個位置里。
2.根據要導入的數據快兒建立MySql資料庫和表,然後進入命令提示符里使用命令
load data local infile 'D:/data.txt' into table exceltomysql fields terminated by '\t';
注意:盤符我使用的「/」才成功,否則提示找不到文件 下面文章中是用的「\」!
進行導入操作
手動進行Excel數據和MySql數據轉換
2006年09月16日 星期六 下午 02:44

今天是全國數學建模比賽,同學選的一個題目需要對一個large的Excel表格進行統計,好哥們兒嘛~~便幫助他完成了數據從Excel到MySql的轉化。記下具體步驟分享給大家,也免得大家到網上到處亂找了。
假如要把如圖所示的Excel表格導入到MySql資料庫中,如圖:


步驟一:
選取要導入的數據快兒,另外要多出一列,如下圖:

步驟二:
將選中的數據快兒拷貝到一個新建的表格工作薄,然後「另存為」 -》「文本文件(製表符分割)(*.txt)」,假如存到「D:\data.txt」這個位置里。如圖:

步驟三:
根據要導入的數據快兒建立MySql資料庫和表,然後使用命令
load data local infile 'D:\data.txt' into table exceltomysql fields terminated by '\t';
進行導入操作。如下圖:

現在數據已經全部導入到MySql里了,
讓我們來select一下吧,如圖:

到此,數據由Excel到MySql的轉換已經完成。
下面說下,數據從MySql到Excel的轉化,其過程其實還是藉助那個「製表符分割」的文本文件。
將如要將這個表中的男生信息導入到Excel中,可以這樣。
select * into outfile 'D:\man.txt' from exceltomysql where xingbie="男";
如圖:

這樣,表中所有男生的信息都被輸出到以製表符分割,'\n'結尾的文本文件D:\man.txt文件中。
你可以打開Excel,然後選擇「數據」->「導入外部數據」->「導入數據」,選中「D:\man.txt」,一路確定就行了。

注意:這個方法我用過雖然可以插入到mysql資料庫中,但是有亂碼的危險。所以我更推薦使用下面的方法。

方法二:此方法是博友TVBBOY整理,我根據自己遇到的情況重新總結如下:
准備工作: PHP-ExcelReader,下載地址: http://sourceforge.net/projects/phpexcelreader 我用的是2007-07-06的那個壓縮文件,下載後用到\phpExcelReader\Excel目錄下的oleread.inc和reader.php兩個文件,並將reader.php文件打開後require_once 'Spreadsheet/Excel/Reader/OLERead.php';屏蔽掉,增加為require_once 'oleread.inc'; 然後直接將這兩個文件復制到伺服器下,我用的是WAMP,我直接復制到WWW目錄下,再將所需要的excel文件考進來我的文件是classify.xls,然後需要一個調用reader.php的文件,源代碼如下:

ExcelToMysql.php

<?php
require_once 'reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('classify.xls'); //」classify.xls」是指要導入到mysql中的excel文件
@ $db = mysql_connect("localhost", "root", "") or
die("Could not connect to database.");//連接資料庫
mysql_query("set names 'gbk'");//輸出中文
mysql_select_db('japlearn'); //選擇資料庫
error_reporting(E_ALL ^ E_NOTICE);

for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注釋的for循環列印excel表數據

//以下代碼是將excel表數據【6個欄位】插入到mysql中,根據你的excel表欄位的多少,改寫以下代碼吧!
$sql = "INSERT INTO classify VALUES('".
$data->sheets[0]['cells'][$i][1]."','".
$data->sheets[0]['cells'][$i][2]."','".
$data->sheets[0]['cells'][$i][3]."','".
$data->sheets[0]['cells'][$i][4]."','".$data->sheets[0]['cells'][$i][5]."','".$data->sheets[0]['cells'][$i][6]."')";

echo $sql.'<br />';
$res = mysql_query($sql);
}

?>
文中紅色標注為需要注意的地方,請替換成你配置好的數據,如資料庫配置等。運行http://localost/ExcelToMysql.php實現導入。

I. static的方法怎麼調用資料庫

全局變數前加上關鍵字static,全局變數就定義成一個全局靜態變數.,全局靜態變數存儲在靜態存儲區,在整個程序運行期間一直存在。全局靜態變數在程序運行之前就存在。初始化:未經初始化的全局靜態變數會被自動初始化為0(自動對象的值是任意的,除非他被顯式初始化)。作用域:全局靜態變數在聲明他的文件之外是不可見的,准確地說是從定義之處開始,到文件結尾。
局部靜態數據
在局部變數之前加上關鍵字static,局部變數就成為一個局部靜態變數。局部靜態變數再程序執行到作用域時候,就會存在。
局部靜態數據再內存中的靜態存儲區。
初始化:未經初始化的全局靜態變數會被自動初始化為0(自動對象的值是任意的,除非他被顯式初始化)。
作用域:作用域仍為局部作用域,當定義它的函數或者語句塊結束的時候,作用域結束。但是當局部靜態變數離開作用域後,並沒有銷毀,而是仍然駐留在內存當中,只不過我們不能再對它進行訪問,直到該函數再次被調用,並且值不變。
靜態函數
在函數返回類型前加static,函數就定義為靜態函數。函數的定義和聲明在默認情況下都是extern的,但靜態函數只是在聲明他的文件當中可見,不能被其他文件所用。
函數的實現使用static修飾,那麼這個函數只可在本cpp內使用,不會同其他cpp中的同名函數引起沖突。
warning:不要再頭文件中聲明static的全局函數,不要在cpp內聲明非static的全局函數,如果你要在多個cpp中復用該函數,就把它的聲明提到頭文件里去,否則cpp內部聲明需加上static修飾。
類的靜態成員
靜態成員可以實現多個對象之間的數據共享,並且使用靜態數據成員還不會破壞隱藏的原則,即保證了安全性。
靜態數據成員不能在類中初始化,實際上類定義只是在描述對象的藍圖,在其中指定初值是不允許的。也不能在類的構造函數中初始化該成員,因為靜態數據成員為類的各個對象共享,否則每次創建一個類的對象則靜態數據成員都要被重新初始化靜態成員可以被初始化,但只能在類體外進行初始化。 一般形式:數據類型 類名::靜態數據成員名=初值。
靜態成員不可在類體內進行賦值,因為它是被所有該類的對象所共享的。你在一個對象里給它賦值,其他對象里的該成員也會發生變化。
靜態成員屬於整個類所有,不需要依賴任何對象,它在對象中不佔用存儲空間。
靜態成員仍然遵循public,