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

資料庫的訪問

發布時間: 2022-03-07 03:13:13

1. 訪問資料庫的方式有哪些啊

在ASP中可以通過三種方式訪問資料庫:

1、IDC(Internet Database Connector)方式;

2、ADO(ActiveX Data Objects)方式;

3、RDS(Remote Data Service)方式。

這三種訪問方式對資料庫的訪問都是由Internet Information Server完成的。通過Web瀏覽器用HTTP協議向IIS(Internet信息伺服器)發送請求,IIS執行對資料庫的訪問,並返回一個HTML格式的文檔響應

2. Web資料庫的訪問技術

Web資料庫訪問技術通常是通過三層結構來實現的。目前建立與Web資料庫連接訪問的技術方法可歸納為CGI技術,ODBC技術和ASP、JSP、PHP技術。
CGI技術
CGI(Common Gateway Interface,通用網關界面)是一種Web伺服器上運行的基於Web瀏覽器輸入程序的方法,是最早的訪問資料庫的解決方案。CGI程序可以建立網頁與資料庫之間的連接,將用戶的查詢要求轉換成資料庫的查詢命令,然後將查詢結果通過網頁返回給用戶。
CGI程序需要通過一個介面才能訪問資料庫。這種介面多種多樣,資料庫系統對CGI程序提供了各種資料庫介面如Perl、C/C++、VB等。為了使用各種資料庫系統,CGI程序支持ODBC方式,通過ODBC介面訪問資料庫。
ODBC技術
ODBC(Open Database Connectivity,開放資料庫互接)是一種使用sql的應用程序介面(API)。ODBC最顯著的優點就是它生成的程序與資料庫系統無關,為程序員方便地編寫訪問各種DBMS的資料庫應用程序提供了一個統一介面,使應用程序和資料庫源之間完成數據交換。ODBC的內部結構為4層:應用程序層、驅動程序管理器層、驅動程序層、數據源層。它們之間的關系如圖1-5所示。由於ODBC適用於不同的資料庫產品,因此許多伺服器擴展程序都使用了包含ODBC層的系統結構。
Web伺服器通過ODBC資料庫驅動程序向資料庫系統發出SQL請求,資料庫系統接收到的是標准SQL查詢語句,並將執行後的查詢結果再通過ODBC傳回Web伺服器,Web伺服器將結果以HTML網頁傳給Web瀏覽器,工作原理如圖1-6所示。
由於Java語言所顯示出來的編程優勢贏得了眾多資料庫廠商的支持。在資料庫處理方面,Java提供的JDBC為資料庫開發應用提供了標準的應用程序編程介面。與ODBC類似,JDBC也是一種特殊的API,是用於執行SQL語句的Java應用程序介面。它規定了Java如何與資料庫之間交換數據的方法。採用Java和JDBC編寫的資料庫應用程序具有與平台無關的特性。
ASP、JSP、PHP技術
ASP是Microsoft開發的動態網頁技術,主要應用於Windows NT+IIS或 Windows 9x+PWS平台。確切地說ASP不是一種語言,而是Web伺服器端的開發環境。利用ASP可以產生和運行動態的、交互的、高性能的Web服務應用程序。ASP支持多種腳本語言,除了VBScript和Pscript,也支持Perl語言,並且可以在同一ASP文件中使用多種腳本語言以發揮各種腳本語言的最大優勢。但ASP默認只支持VBScript和Pscript,若要使用其他腳本語言,必須安裝相應的腳本引擎。ASP支持在伺服器端調用ActiveX組件ADO對象實現對資料庫的操作。在具體的應用中,若腳本語言中有訪問資料庫的請求,可通過ODBC與後台資料庫相連,並通過ADO執行訪問庫的操作。關於ASP的編程技術將會在第7章中詳細介紹。
JSP是Sun公司推出的新一代Web開發技術。作為Java家族的一員,幾乎可以運行在所有的操作系統平台和Web伺服器上,因此JSP的運行平台更為廣泛。目前JSP支持的腳本語言只有Java。JSP使用JDBC實現對資料庫的訪問。目標資料庫必須有一個JDBC的驅動程序,即一個從資料庫到Java的介面,該介面提供了標準的方法使Java應用程序能夠連接到資料庫並執行對資料庫的操作。JDBC不需要在伺服器上創建數據源,通過JDBC、JSP就可以實現SQL語句的執行。
PHP是Rasmus Lerdorf推出的一種跨平台的嵌入式腳本語言,可以在Windows、UNIX、Linux等流行的操作系統和IIS、Apache、Netscape等Web伺服器上運行,用戶更換平台時,無需變換PHP代碼。PHP是通過Internet合作開發的開放源代碼軟體,它借用了C、Java、Perl語言的語法並結合PHP自身的特性,能夠快速寫出動態生成頁面。PHP可以通過ODBC訪問各種資料庫,但主要通過函數直接訪問資料庫。PHP支持目前絕大多數的資料庫,提供許多與各類資料庫直接互連的函數,包括Sybase、Oracle、SQL Server等,其中與SQL Server資料庫互連是最佳組合。

3. java如何訪問資料庫

Java可以使用JDBC訪問資料庫,也可以使用各類ORM框架訪問資料庫,但這些框架最終還是通過JDBC訪問資料庫,它們只是封裝了資料庫操作,而使得開發者可以減少這部分消耗。因此,本文只講解JDBC訪問方式。
JDBC訪問一般分為如下流程:
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() ;
}
}

4. Java 如何進行資料庫訪問的

1. 載入一個對應資料庫的JDBC驅動

在建立到一個資料庫的連接之前,必須先載入這個資料庫的JDBC驅動程序,載入之後此driver會自動注冊到JDBC驅動列表中。載入一個JDBC驅動有兩種方法。

a) 在命令行方式下指定驅動器或者用冒號分割驅動器列表:

具體命令如下:

C:\>java –Djdbc.drivers = com.company1.Driver:com.company2.Driver youProject

b)第二種方法,在程序中調用Class.forName()方法。推薦使用。。。。

try

{

String driverName = 「com.imaginary.sql.msql.MsqlDriver」;

Class.forName(driverName).newInstance();

}

Catch(ClassNotFoundException e1)

{

//catch could not find database driver exception.

}

2.連接到資料庫。

根據您後台待連接的資料庫不同,而有小小的差別。

a) 連接到Oracle資料庫。

Connection connection = null ;

try

{

//load the jdbc driver ;

String driverName = 「oracle.jdbc.driver.OracleDriver」;

Class.forName(driverName).newInstance();

//create a connection to the database;

String serverName = 「127.0.0.1」;

String serverPort = 「1521」;

String serverID = 「datebase1」

String userName = 「hello」;

String userPsw = 「world」;

String url = 「jdbc:oracle.thin:@」 + serverName + 「:」 + serverPort + 「:」 + serverID ;

Connection = DriverManager.getConnection(url , userName , userPsw);

}

catch(ClassNotFoundException e1)

{

//catch could not find database driver exception.

}

catch(SQLException e2)

{

//catch could not connect to the database exception.

}

b) 連接到一個SQL Server資料庫。

Connection connection = null ;

try

{

//load the jdbc driver ;

String driverName = 「com.microsoft.jdbc.sqlserver.SQLServerDriver」;

Class.forName(driverName).newInstance();

//create a connection to the database;

String serverName = 「127.0.0.1」;

String serverPort = 「1433」;

String serverID = serverName + serverPort ;

String userName = 「hello」;

String userPsw = 「world」;

String url = 「jdbc:JSQLConnect ://」 + serverID ;

Connection = DriverManager.getConnection(url , userName , userPsw);

}

catch(ClassNotFoundException e1)

{

//catch could not find database driver exception.

}

catch(SQLException e2)

{

//catch could not connect to the database exception.

}

c) 連接到一個MySQL資料庫上。。。。

Connection connection = null ;

try

{

//load the jdbc driver ;

String driverName = 「org.gjt.mm.mysql.Driver」;
Class.forName(driverName).newInstance();
//create a connection to the database;
String serverName = 「127.0.0.1」;
String serverID = 「database」;
String userName = 「hello」;
String userPsw = 「world」;
String url = 「jdbc:mysql ://」 + serverName + 「/」 + serverID ;
Connection = DriverManager.getConnection(url , userName , userPsw);
}
catch(ClassNotFoundException e1)
{
//catch could not find database driver exception.
}
catch(SQLException e2)
{
//catch could not connect to the database exception.
}
綜合上面的三種資料庫連接方式 , 其實大同小異。由於訪問不同的資料庫和所使用的資料庫驅動程序不同,所以導致代碼表面上有小小不同,但透過表面看來,內部都是
1. 載入一個特定的資料庫JDBC驅動。
2. 連接到一個資料庫。
3. 之後,就可以對一個特定的資料庫進行特定的操作了。

5. 訪問SQL資料庫

1.資料庫建表,
create table mytable(
pkid nvarchar(40) not null,
a nvarchar(40) null )
insert into mytable(pkid,a) values(newid(),'測試')
2.新建對應此表的實體類
[Serializable]
public class mytable {
private String _pkid = "";
public String pkid { get { return _pkid; } set { _pkid = value; } }
private String _a = ""; public String a { get { return _a; } set { _a = value; } } } 3.新建操作類:
public class mytableDAO {
private String _ConnectionString;
public mytableDAO(String ConnectionString) {
this._ConnectionString = ConnectionString; }
public int New(Entities.MsgRecord obj) {
String sql = "insert into mytable(pkid,a) values(@pkid,@a)";
SqlConnection cn = new SqlConnection(this._ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.Parameters.AddWithValue("@a", obj.a); cmd.Parameters.AddWithValue("@pkid",
String.Empty.Equals(obj.pkid) ? System.Guid.NewGuid().ToString() : obj.pkid);
try {
if (cn.State != ConnectionState.Open)
cn.Open();
return cmd.ExecuteNonQuery(); }
catch { return -1; }
finally {
if (cn.State != ConnectionState.Closed)
cn.Close(); } }
public int Update(Entities.mytable obj) {
String sql = "Update mytable Set a=@a Where pkid=@ObjectID";
SqlConnection cn = new SqlConnection(this._ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.Parameters.AddWithValue("@a", obj.a);
cmd.Parameters.AddWithValue("@pkid", obj.pkid);
try {
if (cn.State != ConnectionState.Open)
cn.Open();
return cmd.ExecuteNonQuery(); }
catch { return -1; }
finally {
if (cn.State != ConnectionState.Closed)
cn.Close(); } }
public int Del(Entities.mytable obj) {
String sql = "delete from mytable Where pkid=@ObjectID";
SqlConnection cn = new SqlConnection(this._ConnectionString);
SqlCommand cmd = new SqlCommand(sql, cn); cmd.Parameters.AddWithValue("@ObjectID", obj.pkid); try { if (cn.State != ConnectionState.Open) cn.Open(); return cmd.ExecuteNonQuery(); } catch { return -1; } finally { if (cn.State != ConnectionState.Closed) cn.Close(); } } public int Del(String where) { String sql = String.Format("delete from mytable Where {0}", where.ToLower().Replace("update", "").Replace("delete", "")); SqlConnection cn = new SqlConnection(this._ConnectionString); SqlCommand cmd = new SqlCommand(sql, cn); try { if (cn.State != ConnectionState.Open) cn.Open(); return cmd.ExecuteNonQuery(); } catch { return -1; } finally { if (cn.State != ConnectionState.Closed) cn.Close(); } } public DataTable Query(String where) { String sql = String.Format("select * from mytable Where {0}", where.ToLower().Replace("update", "").Replace("delete", "").Replace("insert", "").Replace(";", "").Replace("--", "").Replace("exec", "")); try { SqlDataAdapter da = new SqlDataAdapter(sql, new SqlConnection(this._ConnectionString)); DataTable dt = new DataTable(); da.Fill(dt); return dt; } catch { return null; } } }
4.在ui中調用:
4.1 新增: private void NewData() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); mytable obj=new mytable(); obj.a=this.txtbox_a.Text; obj.b=this.txtbox_b.Text; obj.c=this.txtbox_c.Text; .New(obj); }
4.2 取數據綁定GridView private void LoadData_InitGridView() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); Table dt=.Query(String.Format(" a ='{0}'",this.txtbox_a.Text)); //gridview this.GridView1.DataSource=dt; this.GridView1.DataBind(); //textbox control this.textbox_a.Text=dt.Rows[0][0].ToString(); }
4.3刪除 private void Del() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); .Del(where); }
4.4更新 private void Update() { String conn=System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString mytableDao =new mytableDao(conn); .Update(obj);//obj 為mytable的一個實例:需要更新的 }
5.配置文件中連接信息 <connectionStrings> <add name="dbCon" connectionString="Data Source=192.168.1.100;Initial Catalog=Northwind;User ID=sa;PassWord=sa" providerName="System.Data.SqlClient"/> </connectionStrings>
6.讀取連接信息 System.Configuration.ConfigurationManager.ConnectionStrings["dbCon"].ConnectionString

6. 資料庫如何訪問

關於如果訪問的問題分3步吧
1.贈送方應該告訴你放置你資料庫的伺服器地址,以及資料庫的用戶名和密碼,不過一般用戶名和密碼是你提供給贈送方,他們幫你設置好的。
2.你本地裝有MYSQL和MSSQL資料庫。
3.對本地資料庫進行訪問遠程資料庫的設置。
最後一步要自己具體操作的。

一般來說資料庫的伺服器和網站的伺服器是分開的,你說的自行建立文件夾當作資料庫我不太明白你到底是什麼意思,如果你用的是access資料庫,就可以方便地在本地建立。

7. SQL Server中在A資料庫下如何訪問B資料庫中的C表:

有兩種情況
1、若兩個資料庫在不同的電腦上,那先在A上注冊B
2、若在同一台電腦上則可以跳過第一步

代碼:
SELECT * FROM B.DBO.C 即可

本人在兩個資料庫中轉移數據就是這樣做的。

8. 常用的資料庫訪問方式是什麼

mysql,sqlserver,oracle,access等等,這些都是很有名的,
但是再用的時候一般根據所用的編程語言選擇使用的資料庫,
比如mysql開源的,和php結合比較好。
sqlserver是微軟的,和.net之類配合使用較好。
oracle一般大型項目使用較多

9. 一個項目訪問兩個資料庫和訪問一個資料庫的差別, 訪問性能上有什麼差別

我們做項目經常訪問多個資料庫,管理庫單獨的,還有一些業務資料庫。訪問多個資料庫其實根本沒什麼性能上的差異,看你怎麼配置的。池,緩存等等。還有你的程序是怎麼連接處理數據的。所以說訪問一個或者多個資料庫在性能上都不是問題。

10. 如何直接訪問網站的資料庫

樓上的這種問題我也遇到過,往往是設計網站界面視圖的人沒有考慮到所有的需求,提供的資料庫查詢不夠靈活。

確實有可能找到辦法去訪問這個資料庫,不過應該提醒樓主,網站做界面的目的出了美觀方便外,就是要限制用戶不訪問,所以通過非正常途徑訪問就要承擔一定的責任了。

具體方法有:

1.理想方法:得到資料庫的地址,例如樓上說的把mdb文件直接下載下來。當然很少有網站用access做資料庫的,一般情況是需要知道資料庫IP地址,資料庫類型,庫名,用戶名和密碼,然後通過toad等客戶端軟體來訪問。
既然是理想方法,這種情況不太可能發生,除非你是內部人士,可以知道很多信息。因為通常資料庫伺服器會放在區域網上,不能被外部訪問到。

2.實際方法:採用SQL注入等黑客技術。SQL注入是最簡單的黑客技術了,不過由於簡單威力也不會很大,要求網站設計對於安全的考慮不周,存在漏洞才行。
由於網站設計不周,就會在出錯或者某些情況下暴露出資料庫表結構的一些內幕,這樣就可以寫出你想要的SQL命令,把它插入到Web表單遞交,或者頁面請求的查詢字元串中,最終達到欺騙伺服器執行的目的。

如果樓主想了解更多,可以學學黑客知識,祝樓主好運!