㈠ 如何獲取SQL中所有資料庫的名稱
select name from mater..sysdatabases
㈡ 怎樣從HTML網頁中獲取SQL資料庫里的數據
1、sudo su postgres指令進入postgres。
㈢ 如何從mysql資料庫讀取數據
讀取資料庫,首先要將資料庫的驅動包導入:如果是mysql資料庫,需要導入mysql-connector-java-5.1.27.jar,如果是oracle就需要導入oracle.jar包;
然後就是建立資料庫連接,使用Connection 新建連接,然後執行你的sql語句查詢出需要的數據,下面是兩個方法: public PageModel findAllUser(int pageNo,int pageSize){String sql = "select * from user where user_name <> 'root' order by user_name" +"limit" + (pageNo - 1) * pageSize + "," + pageSize;PageModel pageModel =null;Connection conn =null;Statement stmt =null;ResultSet rs = null;try{conn = DB.getConn();stmt = conn.createStatement();rs = stmt.executeQuery(sql);List user_List = new ArrayList();while(rs.next()){User user = new User();user.setUser_name(rs.getString("user_name"));user.setUser_password(rs.getString("user_password"));user.setUser_tel(rs.getString("user_tel"));user.setUser_email(rs.getString("user_email"));user.setUser_createDate(rs.getTimestamp("user_createdate"));user_List.add(user);}//取得所有記錄int totalRecords = getTotalRecords(conn);pageModel = new PageModel();pageModel.setPageSize(pageSize);pageModel.setList(user_List);pageModel.setTotalRecord(totalRecords);}catch(SQLException e){e.printStackTrace();}finally{DB.close(rs);DB.close(stmt);DB.close(conn);}return pageModel;} /** * 取得所有記錄 * @param conn * @return 所有記錄totalRecords */public int getTotalRecords(Connection conn){String sql = "select count(*) from user where user_name <> 'root' ";int totalRecords = 0;Statement stmt = null;ResultSet rs = null;try{conn = DB.getConn();stmt = conn.createStatement();rs = stmt.executeQuery(sql);if(rs.next()){totalRecords = rs.getInt(1);}}catch(SQLException e){e.printStackTrace();}finally{DB.close(rs);DB.close(stmt);DB.close(conn);}return totalRecords;}
㈣ 如何得到網站資料庫啊
如果是你自己的,我想你不會在網上找,一般的網站的資料庫都是很隱秘的,你可以把他的的網站整站下載就行了,如果是SQL的資料庫,你下載不了的
㈤ jsp中如何獲得資料庫的值
最簡單的JSP頁面中的資料庫操作方法:
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>
<%@page import="java.sql.*"%>
<center>
<H1> <font color="blue" size="12">管理中心</font></H1>
<HR />
<table width="80%" border="1">
<tr>
<th>ID</th>
<th>書名</th>
<th>作者</th>
<th>價格</th>
<th>刪除</th>
</tr>
<%
// 資料庫的名字
String dbName = "zap";
// 登錄資料庫的用戶名
String username = "sa";
// 登錄資料庫的密碼
String password = "123";
// 資料庫的IP地址,本機可以用 localhost 或者 127.0.0.1
String host = "127.0.0.1";
// 資料庫的埠,一般不會修改,默認為1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//聲明需要使用的資源
// 資料庫連接,記得用完了一定要關閉
Connection con = null;
// Statement 記得用完了一定要關閉
Statement stmt = null;
// 結果集,記得用完了一定要關閉
ResultSet rs = null;
try {
// 注冊驅動
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 獲得一個資料庫連接
con = DriverManager.getConnection(connectionUrl);
String SQL = "SELECT * from note";
// 創建查詢
stmt = con.createStatement();
// 執行查詢,拿到結果集
rs = stmt.executeQuery(SQL);
while (rs.next()) {
%>
<tr>
<td>
<%=rs.getInt(1)%>
</td>
<td>
<a href="prepareupdate?ID=<%=rs.getInt("ID")%>" target="_blank"><%=rs.getString(2)%></a>
</td>
<td>
<%=rs.getString(3)%>
</td>
<td>
<%=rs.getString(4)%>
</td>
<td>
<a href="delete?ID=<%=rs.getInt("ID")%>" target="_blank">刪除</a>
</td>
</tr>
<%
}
} catch (Exception e) {
// 捕獲並顯示異常
e.printStackTrace();
} finally {
// 關閉我們使用過的資源
if (rs != null)
try {
rs.close();
} catch (Exception e) {}
if (stmt != null)
try {
stmt.close();
} catch (Exception e) {}
if (con != null)
try {
con.close();
} catch (Exception e) {}
}
%>
</table>
<a href="insert.jsp">添加新紀錄</a>
</center>
㈥ 如何獲取資料庫名稱
select name from sysdatabases
㈦ 資料庫怎麼獲得什麼是資料庫
什麼是資料庫?
資料庫是以某種文件結構存儲的一系列信息表,這種文件結構使您能夠訪問這些表、選擇表中的列、對表進行排序以及根據各種標准選擇行。資料庫通常有多個 索引與這些表中的許多列相關聯,所以我們能盡可能快地訪問這些表。
以員工記錄為例,您可以設想一個含有員工姓名、地址、工資、扣稅以及津貼等內容的表。讓我們考慮一下這些內容可能如何組織在一起。您可以設想一個表包含員工姓名、地址和電話號碼。您希望保存的其它信息可能包括工資、工資范圍、上次加薪時間、下次加薪時間、員工業績評定等內容。
這些內容是否應保存在一個表格中?幾乎可以肯定不應該如此。不同類別的員工的工資范圍可能沒有區別;這樣,您可以僅將員工類型儲存在員工記錄表中,而將工資范圍儲存在另一個表中,通過類型編號與這個表關聯。考慮以下情況:
Key Lastname SalaryType SalaryType Min Max
1 Adams 2 1 30000 45000
2 Johnson 1 2 45000 60000
3 Smyth 3 3 60000 75000
4 Tully 1
5 Wolff 2
SalaryType 列中的數據引用第二個表。我們可以想像出許多種這樣的表,如用於存儲居住城市和每個城市的稅值、健康計劃扣除金額等的表。每個表都有一個主鍵列(如上面兩個表中最左邊的列)和若干數據列。在資料庫中建立表格既是一門藝術,也是一門科學。這些表的結構由它們的範式指出。我們通常說表屬於1NF、2NF 或 3NF。
第一範式:表中的每個表元應該只有一個值(永遠不可能是一個數組)。(1NF)
第二範式:滿足 1NF,並且每一個非主鍵列完全依賴於主鍵列。這表示主鍵和該行中的剩餘表元之間是 1 對 1 的關系。(2NF)
第三範式:滿足 2NF,並且所有非主鍵列是互相獨立的。任何一個數據列中包含的值都不能從其他列的數據計算得到。(3NF)
現在,幾乎所有的資料庫都是基於「第三範式 (3NF)」創建的。這意味著通常都有相當多的表,每個表中的信息列都相對較少。
從資料庫中獲取數據
假設我們希望生成一個包含員工及其工資范圍的表,在我們設計的一個練習中將使用這個表。這個表格不是直接存在在資料庫中,但可以通過向資料庫發出一個查詢來構建它。我們希望得到如下所示的一個表:
Name Min Max
Tully $30,000.00 $45,000.00
Johnson $30,000.00 $45,000.00
Wolff $45,000.00 $60,000.00
Adams $45,000.00 $60,000.00
Smyth $60,000.00 $75,000.00
我們發現,獲得這些表的查詢形式如下所示
SELECT DISTINCTROW Employees.Name, SalaryRanges.Min,
SalaryRanges.Max FROM Employees INNER JOIN SalaryRanges ON Employees.SalaryKey = SalaryRanges.SalaryKey
ORDER BY SalaryRanges.Min;
這種語言稱為結構化查詢語言,即 SQL,而且它是幾乎目前所有資料庫都可以使用的一種語言。SQL-92 標准被認為是一種基礎標准,而且已更新多次。
資料庫的種類
PC 上的資料庫,如 dBase、Borland Paradox、Microsoft Access 和 FoxBase。
資料庫伺服器:IBM DB/2、Microsoft SQL Server、 Oracle、Sybase、SQLBase 和 XDB。
所有這些資料庫產品都支持多種相對類似的 SQL 方言,因此,所有資料庫最初看起來好象可以互換。每種資料庫都有不同的性能特徵,而且每一種都有不同的用戶界面和編程介面。
ODBC
如果我們能夠以某種方式編寫不依賴於特定廠商的資料庫的代碼,並且能夠不改變自己的調用程序即可從這些資料庫中得到相同的結果,那將是一件很好的事。如果我們可以僅為所有這些資料庫編寫一些封裝,使它們具有相似的編程介面,這種對資料庫編程獨立於供應商的特性將很容易實現。
什麼是 JDBC?
JDBC 是對 ODBC API 進行的一種面向對象的封裝和重新設計,它易於學習和使用,並且它真正能夠使您編寫不依賴廠商的代碼,用以查詢和操縱資料庫。盡管它與所有 Java API 一樣,都是面向對象的,但它並不是很高級別的對象集.
除 Microsoft 之外,多數廠商都採用了 JDBC,並為其資料庫提供了 JDBC 驅動程序;這使您可輕松地真正編寫幾乎完全不依賴資料庫的代碼。另外,JavaSoft 和 Intersolv 已開發了一種稱為 JDBC-ODBC Bridge 的產品,可使您連接還沒有直接的 JDBC 驅動程序的資料庫。支持 JDBC 的所有資料庫必須至少可以支持 SQL-92 標准。這在很大程度上實現了跨資料庫和平台的可移植性。
安裝和使用 JDBC
JDBC 的類都被歸到 java.sql 包中,在安裝 Java JDK 1.4時會自動安裝。然而,如果您想使用 JDBC-ODBC 橋。JDBC-ODBC 驅動程序可從 Sun 的 Java 網站 (http://java.sun.com/) 輕松地找到並下載。在您擴充並安裝了這個驅動程序後,必須執行下列步驟:
將 \jdbc-odbc\classes; 路徑添加到您的 PATH 環境變數中。
將 \jdbc-odbc\classes; 路徑添加到您的 CLASSPATH 環境變數中。
JDBC 驅動程序的類型
Java 程序連接資料庫的方法實際上有四種:
1. JDBC-ODBC 橋和 ODBC 驅動程序 -- 在這種方式下,這是一個本地解決方案,因為 ODBC 驅動程序和橋代碼必須出現在用戶的每台機器中。從根本上說這是一個臨時解決方案。
2. 本機代碼和 Java 驅動程序 -- 它用另一個本地解決方案(該平台上的 Java 可調用的本機代碼)取代 ODBC 和 JDBC-ODBC 橋。
3. JDBC 網路的純 Java 驅動程序 -- 由 Java 驅動程序翻譯的 JDBC 形成傳送給伺服器的獨立協議。然後,伺服器可連接任何數量的資料庫。這種方法使您可能從客戶機 Applet 中調用伺服器,並將結果返回到您的 Applet。在這種情況下,中間件軟體提供商可提供伺服器。
4. 本機協議 Java 驅動程序 -- Java 驅動程序直接轉換為該資料庫的協議並進行調用。這種方法也可以通過網路使用,而且可以在 Web 瀏覽器的 Applet 中顯示結果。在這種情況下,每個資料庫廠商將提供驅動程序。
如果您希望編寫代碼來處理 PC 客戶機資料庫,如 dBase、Foxbase 或 Access,則您可能會使用第一種方法,並且擁有用戶機器上的所有代碼。更大的客戶機-伺服器資料庫產品(如 IBM 的 DB2)已提供了第 3 級別的驅動程序。
兩層模型和三層模型
當資料庫和查詢它的應用程序在同一台機器上,而且沒有伺服器代碼的干預時,我們將生成的程序稱為兩層模型。一層是應用程序,而另一層是資料庫。在 JDBC-ODBC 橋系統中通常是這種情況。
當一個應用程序或 applet 調用伺服器,伺服器再去調用資料庫時,我們稱其為三層模型。當您調用稱為「伺服器」的程序時通常是這種情況。
編寫 JDBC 代碼訪問資料庫
用 ODBC 注冊您的資料庫
連接資料庫
所有與資料庫有關的對象和方法都在 java.sql 包中,因此在使用 JDBC 的程序中必須加入 "import java.sql.* "。 JDBC 要連接 ODBC 資料庫,您必須首先載入 JDBC-ODBC 橋驅動程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
該語句載入驅動程序,並創建該類的一個實例。然後,要連接一個特定的資料庫,您必須創建 Connect 類的一個實例,並使用 URL 語法連接資料庫。
String url = "jdbc:odbc:Northwind";
Connection con = DriverManager.getConnection(url);
請注意,您使用的資料庫名是您在 ODBC 設置面板中輸入的「數據源」名稱。
URL 語法可能因資料庫類型的不同而變化極大。
jdbc:subprotocol:subname
第一組字元代表連接協議,並且始終是 jdbc。還可能有一個子協議,在此處,子協議被指定為 odbc。它規定了一類資料庫的連通性機制。如果您要連接其它機器上的資料庫伺服器,可能也要指定該機器和一個子目錄:
jdbc:bark//doggie/elliott
最後,您可能要指定用戶名和口令,作為連接字元串的一部分:
jdbc:bark//doggie/elliot;UID=GoodDog;PWD=woof
訪問MSSQL Server方法:(驅動程序需要:msutil.jar,msbase.jar,mssqlServer.jar)
DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver
URL=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo
username=sa
password=
maxcon=10
mincon=1
poolName=SkyDev
利用我們開發的資料庫類,使用方法如下:
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
//類代碼(不含連接工廠實現)
package skydev.moles.data;
public final class SqlServerConnectionFactory
extends ConnectionFactory {
private final String dbDriver =
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String host;
private int port;
private String databaseName;
public SqlServerConnectionFactory() {
super.setDriverName(dbDriver);
}
/**
*
* @param host 資料庫所在的主機名:如"localhost"
* @param port SQL伺服器運行的埠號,如果使用預設值 1433,傳入一個負數即可
* @param databaseName 資料庫名稱
* @param userName 用戶名
* @param password 口令
*/
public SqlServerConnectionFactory(String host,
int port,
String databaseName,
String userName,
String password) {
this.setHost(host);
this.setPort(port);
this.setDatabaseName(databaseName);
this.setUserName(userName);
this.setPassword(password);
init();
}
private void init() {
super.setDriverName(dbDriver);
super.setUrl("jdbc:microsoft:sqlserver://" + host.trim() + ":" +
new Integer(port).toString() + ";DatabaseName=" +
databaseName.trim());
//super.setUrl("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo");
}
……
//------------------------------------------------------------------------------------
訪問MySQL的方法:
DBDriver=com.mysql.jdbc.Driver
URL=jdbc:mysql://localhost/demo
username=
password=
maxcon=5
mincon=1
poolName=zhengmao
訪問資料庫
一旦連接到資料庫,就可以請求表名以及表列的名稱和內容等信息,而且您可以運行 SQL 語句來查詢資料庫或者添加或修改其內容。可用來從資料庫中獲取信息的對象有:
DatabaseMetaData 有關整個資料庫的信息:表名、表的索引、資料庫產品的名稱和版本、資料庫支持的操作。
ResultSet 關於某個表的信息或一個查詢的結果。您必須逐行訪問數據行,但是您可以任何順序訪問列。
ResultSetMetaData 有關 ResultSet 中列的名稱和類型的信息。
盡管每個對象都有大量的方法讓您獲得資料庫元素的極為詳細的信息,但在每個對象中都有幾種主要的方法使您可獲得數據的最重要信息。然而,如果您希望看到比此處更多的信息,建議您學習文檔以獲得其餘方法的說明。
ResultSet
ResultSet 對象是 JDBC 中最重要的單個對象。從本質上講,它是對一個一般寬度和未知長度的表的一種抽象。幾乎所有的方法和查詢都將數據作為 ResultSet 返回。ResultSet 包含任意數量的命名列,您可以按名稱訪問這些列。它還包含一個或多個行,您可以按順序自上而下逐一訪問。在您使用 ResultSet 之前,必須查詢它包含多少個列。此信息存儲在 ResultSetMetaData 對象中。
//從元數據中獲得列數
ResultSetMetaData rsmd;
rsmd = results.getMetaData();
numCols = rsmd.getColumnCount();
當您獲得一個 ResultSet 時,它正好指向第一行之前的位置。您可以使用 next() 方法得到其他每一行,當沒有更多行時,該方法會返回 false。由於從資料庫中獲取數據可能會導致錯誤,您必須始終將結果集處理語句包括在一個 try 塊中。
您可以多種形式獲取 ResultSet 中的數據,這取決於每個列中存儲的數據類型。另外,您可以按列序號或列名獲取列的內容。請注意,列序號從 1 開始,而不是從 0 開始。ResultSet 對象的一些最常用方法如下所示。
getInt(int); 將序號為 int 的列的內容作為整數返回。
getInt(String); 將名稱為 String 的列的內容作為整數返回。
getFloat(int); 將序號為 int 的列的內容作為一個 float 型數返回。
getFloat(String); 將名稱為 String 的列的內容作為 float 型數返回。
getDate(int); 將序號為 int 的列的內容作為日期返回。
getDate(String); 將名稱為 String 的列的內容作為日期返回。
next(); 將行指針移到下一行。如果沒有剩餘行,則返回 false。
Close(); 關閉結果集。
getMetaData(); 返回 ResultSetMetaData 對象。
ResultSetMetaData
您使用 getMetaData() 方法從 ResultSet 中獲取 ResultSetMetaData 對象。您可以使用此對象獲得列的數目和類型以及每一列的名稱。
getColumnCount(); 返回 ResultSet 中的列數。
getColumnName(int); 返回列序號為 int 的列名。
getColumnLabel(int); 返回此列暗含的標簽。
isCurrency(int); 如果此列包含帶有貨幣單位的一個數字,則返回 true。
isReadOnly(int); 如果此列為只讀,則返回 true。
isAutoIncrement(int); 如果此列自動遞增,則返回 true。這類列通常為鍵,而且始終是只讀的。
getColumnType(int); 返回此列的 SQL 數據類型。這些數據類型包括
BIGINT
BINARY
BIT
CHAR
DATE
DECIMAL
DOUBLE
FLOAT
INTEGER
LONGVARBINARY
LONGVARCHAR
NULL
NUMERIC
OTHER
REAL
SMALLINT
TIME
TIMESTAMP
TINYINT
VARBINARY
VARCHAR
DatabaseMetaData
DatabaseMetaData 對象可為您提供整個資料庫的信息。您主要用它獲取資料庫中表的名稱,以及表中列的名稱。由於不同的資料庫支持不同的 SQL 變體,因此,也有多種方法查詢資料庫支持哪些 SQL 方法。
getCatalogs() 返回該資料庫中的信息目錄列表。使用 JDBC-ODBC Bridge 驅動程序,您可以獲得用 ODBC 注冊的資料庫列表。這很少用於 JDBC-ODBC 資料庫。
getTables(catalog, schema,tableNames, columnNames) 返回表名與 tableNames 相符而且列名與 columnNames 相符的所有表的說明。
getColumns(catalog, schema,tableNames, columnNames) 返回表名與 tableNames 相符而且列名與 columnNames 相符的所有表列說明。
getURL(); 獲得您所連接的 URL 名稱。
getDriverName(); 獲得您所連接的資料庫驅動程序的名稱。
獲取有關表的信息
您可以使用 DataBaseMetaData 的 getTables() 方法來獲取資料庫中表的信息。這個方法有如下4個 String 參數:
results =dma.getTables(catalog, schema, tablemask, types[]);
其中參數的意義是:
Catalog 要在其中查找表名的目錄名。對於 JDBC-ODBC 資料庫以及許多其他資料庫而言,可將其設置為 null。這些資料庫的目錄項實際上是它在文件系統中的絕對路徑名稱。
Schema 要包括的資料庫「方案」。許多資料庫不支持方案,而對另一些資料庫而言,它代表資料庫所有者的用戶名。一般將它設置為 null。
Tablemask 一個掩碼,用來描述您要檢索的表的名稱。如果您希望檢索所有表名,則將其設為通配符 %。請注意,SQL 中的通配符是 % 符號,而不是一般 PC 用戶的 * 符號。
types[] 這是描述您要檢索的表的類型的 String 數組。資料庫中通常包括許多用於內部處理的表,而對作為用戶的您沒什麼價值。如果它是空值,則您會得到所有這些表。如果您將其設為包含字元串「TABLES」的單元素數組,您將僅獲得對用戶有用的表格。
一個簡單的 JDBC 程序
我們已經學習了 JDBC 的所有基本功能,現在我們可以編寫一個簡單的程序,該程序打開資料庫,列印它的表名以及某一表列的內容,然後對該資料庫執行查詢。此程序如下所示:
package skydevkit;
import java.sql.*;
public class JdbcOdbc_test {
ResultSet results;
ResultSetMetaData rsmd;
DatabaseMetaData dma;
Connection con;
public JdbcOdbc_test() throws SQLException {
String url = "jdbc:odbc:Northwind";
try {
//載入 JDBC-ODBC 橋驅動程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url);//連接資料庫
dma = con.getMetaData();//獲取資料庫的元數據
System.out.println("Connected to:" + dma.getURL());
System.out.println("Driver " + dma.getDriverName());
} catch (Exception e) {
System.out.println(e);
}
try {
Statement stmt = con.createStatement();
results = stmt.executeQuery("select * from 客戶;");
ResultSetMetaData resultMetaData = results.getMetaData();
int cols = resultMetaData.getColumnCount();
String resultRow = "";
for (int i = 1; i < cols; i++) {
resultRow += resultMetaData.getColumnName(i) + ";";
}
System.out.println(resultRow);
while (results.next()) {
resultRow = "";
for (int i = 1; i < cols; i++) {
try {
resultRow += results.getString(i) + ";";
} catch (NullPointerException e) {
System.out.println(e.getMessage());
}
}
System.out.println(resultRow);
}
} catch (Exception e) {
System.out.println("query exception");
} finally {
results.close();
}
}
}
補充高級內容
關於調用SQLServer存儲過程的例子:(用到了我們開發的資料庫連接類)
CREATE PROCEDURE [dbo].[sp_getStudentByName](@name char(10))
AS
Select * from Students where [Name]=@name
GO
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
CallableStatement pstmt = null;
System.out.println("TestDB1()............");
/* try {
pstmt = con.prepareCall("{call sp_getStudentById(?)}");
pstmt.setInt(1, 1);
}*/
try {
pstmt = con.prepareCall("{call sp_getStudentByName(?)}"); //注意參數如何傳遞
pstmt.setString(1, "Tom");
}
……
使用輸出參數:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY
GO
try {
pstmt = con.prepareCall("{call sp_insertStudent(?,?,?)}");
pstmt.setString(1, "zengqingsong");
pstmt.setInt(2, 22);
pstmt.registerOutParameter(3, Types.INTEGER);
pstmt.executeUpdate();
int id = pstmt.getInt(3);
System.out.println(id);
}
使用返回參數的例子:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY –測試輸出參數
return 30 –測試返回30
GO
try {
pstmt = con.prepareCall("{?=call sp_insertStudent(?,?,?)}");
pstmt.setString(2, "zengqingsong");
pstmt.setInt(3, 22);
pstmt.registerOutParameter(4, Types.INTEGER);
pstmt.registerOutParameter(1, Types.INTEGER);
int ret = pstmt.executeUpdate(); //執行影響的行數
int ret2 = pstmt.getInt(1); //返回參數(輸出參數)
int id = pstmt.getInt(4); //輸出參數
System.out.println(ret);
System.out.println(ret2);
System.out.println(id);
參考資料:http://..com/question/2050414.html
㈧ 如何取得資料庫信息
取得視圖的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的視圖: USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'V' 獲取指定資料庫的視圖的內容: EXEC sp_helptext xxxObject 取得存儲過程的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的存儲過程或者擴展存儲過程: USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'P' OR type = 'X' 獲取指定資料庫的存儲過程或者擴展存儲過程的內容: EXEC sp_helptext xxxObject 無法獲取加密的存儲過程。擴展存儲過程只能得到dll 程序名。 取得函數的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的各種函數(內嵌函數等): USE DBAudit SELECT sysobjects.name AS name, sysusers.name AS owner, type FROM sysobjects LEFT JOIN sysusers ON sysobjects.uid = sysusers.uid WHERE type = 'FN' OR type = 'IF' OR type = 『TF』 獲取指定資料庫的函數的內容: EXEC sp_helptext xxxObject 只能獲取用戶定義的函數內容。 取得觸發器的方法 系統存儲過程 USE xxx EXEC sp_helptrigger xxxTable 或者 獲取指定資料庫的表的觸發器: SELECT sysobj1.name AS name, sysusers.name AS owner FROM sysobjects AS sysobj1 LEFT JOIN sysobjects AS sysobj2 ON sysobj1.parent_obj = sysobj2.id LEFT JOIN sysusers ON sysobj1.uid = sysusers.uid WHERE sysobj1.type = 'TR'AND sysobj2.name = 'xxxTable' 取得索引的方法 系統存儲過程 USE xxx EXEC sp_helpindex xxxTable 用戶 系統存儲過程 USE xxx EXEC sp_helpuser 角色 系統存儲過程 USE xxx EXEC sp_helprole 第二部分: 對於oracle 而言: ?ORACLE 只能連接特定資料庫,不能自動掃描資料庫對象。ORACLE 表必須用用戶來區別,否則表可能重名。ORACLE 不能區別系統表或者是用戶表,因此只能由管理員選擇掃描某些特定用戶的表。 取得資料庫名的方法 只能由用戶指定資料庫,不能自動掃描到特定資料庫伺服器上的所有資料庫。 取得表的方法 存儲資料庫表的系統表/視圖主要有: DBA_ALL_TABLES 描述資料庫中所有的對象以及相關的表。 ALL_ALL_TABLES 描述資料庫中所有的用戶可以訪問的對象以及相關的表。 USER_ALL_TABLES 描述資料庫中當前用戶擁有的對象以及相關的表。 DBA_ TABLES 描述資料庫中所有相關的表。 ALL_ TABLES 描述資料庫中所有的用戶可以訪問的相關的表。 USER_ TABLES 描述資料庫中當前用戶擁有的相關的表。 因此,可以從ALL_TABLES 中取得隸屬於指定用戶的表: SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE OWNER = 'DBAUDIT'; 取得隸屬於指定表空間的表: SELECT TABLE_NAME FROM SYS.ALL_TABLES WHERE TABLESPACE_NAME = 'DBAUDIT'; 也可以不指定用戶名,從而取得所有的表。 SELECT TABLE_NAME FROM SYS.ALL_TABLES; 取得列的方法 存儲資料庫表的列屬性的系統表/視圖主要有: DBA_TAB_COLUMNS 描述資料庫中所有的表的列屬性。 ALL_TAB_COLUMNS 描述資料庫中所有的用戶可以訪問的表的列屬性。 USER_TAB_COLUMNS 描述資料庫中當前用戶擁有的表的列屬性。 ALL_TAB_COLS 描述資料庫中所有的用戶可以訪問的表的列屬性。 因此,可以從ALL_TAB_COLUMNS 中取得隸屬於指定用戶的表: SELECT COLUMN_NAME FROM SYS.ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TASK' AND OWNER = 'DBAUDIT'; 取得視圖的方法 存儲資料庫視圖的系統表/視圖主要有: DBA_VIEWS 描述資料庫中所有的視圖的屬性。 ALL_VIEWS 描述資料庫中所有的用戶可以訪問的視圖的屬性。 USER_VIEWS 描述資料庫中所有的當前用戶擁有視圖的屬性。 因此,可以從ALL_VIEWS 中取得隸屬於指定用戶的視圖: SELECT VIEW_NAME FROM SYS.ALL_VIEWS WHERE OWNER = 'DBAUDIT'; 取得存儲過程的方法 存儲系統對象的系統表/視圖有: DBA_OBJECTS 描述資料庫中所有的對象。 ALL_OBJECTS 描述資料庫中所有的可以訪問的對象。 USER_OBJECTS 描述資料庫中所有的當前用戶擁有的對象。 SYS_OBJECTS 描述資料庫中所有的系統對象。 對象類型有: CONSUMER GROUP CONTEXT DIRECTORY FUNCTION INDEX INDEX PARTITION INDEXTYPE JAVA CLASS JAVA DATA JAVA RESOURCE JAVA SOURCE LIBRARY LOB MATERIALIZED VIEW OPERATOR PACKAGE PACKAGE BODY PROCEDURE QUEUE SEQUENCE SYNONYM TABLE TABLE PARTITION TRIGGER TYPE TYPE BODY VIEW 因此,取得存儲過程可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE'; 取得隸屬於某個用戶的存儲過程可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PROCEDURE' AND OWNER = 『DBAUDIT』; 同樣,取得其他的對象也可以用這個方法,包括表,視圖等。 取得存儲過程內容的方法 對象類型為類型、類型體、過程、函數、包、包體,JAVA 源代碼的所有對象的源代碼都存儲在幾個系統表/視圖中: DBA_SOURCE 存儲所有資料庫對象的源代碼。 ALL_SOURCE 存儲所有可以訪問的資料庫對象的源代碼。 USER_SOURCE 存儲所有當前用戶擁有的資料庫對象的源代碼。 因此,取得存儲過程源代碼的方法: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 『XXX』 AND TYPE = 『PROCEDURE』; 取得函數的方法 同上,取得函數可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION'; 取得隸屬於某個用戶的函數可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'DBAUDIT'; 取得函數內容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'FUNCTION'; 取得觸發器的方法 存儲資料庫觸發器的系統表/視圖主要有: DBA_TRIGGERS 描述資料庫中所有的觸發器的屬性。 ALL_ TRIGGERS 描述資料庫中所有的用戶可以訪問的觸發器的屬性。 USER_ TRIGGERS 描述資料庫中所有的當前用戶擁有觸發器的屬性。 因此,可以從ALL_TRIGGERS 中取得隸屬於指定用戶的觸發器: SELECT TRIGGER_NAME FROM SYS.ALL_TRIGGERS WHERE OWNER = 'DBAUDIT'; 取得觸發器內容的方法: SELECT TRIGGER_BODY FROM SYS.ALL_TRIGGERS WHERE TRIGGER_NAME = 'XXX'; 取得索引的方法 存儲資料庫索引的系統表/視圖主要有: DBA_INDEXES 描述資料庫中所有的索引的屬性。 ALL_INDEXES 描述資料庫中所有的用戶可以訪問的索引的屬性。 USER_INDEXES 描述資料庫中所有的當前用戶擁有索引的屬性。 因此,可以從ALL_ INDEXES 中取得隸屬於指定用戶的索引: SELECT INDEX_NAME,TABLE_NAME FROM SYS.ALL_INDEXES WHERE OWNER = 'DBAUDIT'; 取得索引相關的列的方法: SELECT COLUMN_NAME FROM SYS.ALL_IND_COLUMNS WHERE INDEX_NAME = 'XXX' AND TABLE_OWNER = 'DBAUDIT'; 用戶 存儲資料庫用戶的系統表/視圖主要有: DBA_USERS 描述資料庫中所有的用戶的屬性。 ALL_USERS 描述資料庫中所有的用戶的屬性。 USER_USERS 描述資料庫中當前用戶的屬性。 因此,可以從ALL_USERS 中取得用戶: SELECT USER_ID, USERNAME FROM SYS.ALL_USERS; 角色 存儲角色的表/視圖有: DBA_ROLES 描述資料庫中所有角色。 取得角色方法: SELECT ROLE FROM SYS.DBA_ROLES; 表空間 SELECT TABLESPACE_NAME FROM SYS.DBA_TABLESPACES; 數據文件 SELECT FILE_NAME, FILE_ID, TABLESPACE_NAME FROM SYS.DBA_DATA_FILES; 資料庫連接 存儲資料庫連接的系統表/視圖主要有: DBA_LINKS 描述資料庫中所有的連接的屬性。 ALL_LINKS 描述資料庫中所有的用戶可訪問的連接的屬性。 USER_LINKS 描述資料庫中當前用戶的連接屬性。 因此,可以從DBA_DB_LINKS 中取得連接: SELECT * FROM SYS.DBA_DB_LINKS; 同義詞 SELECT * FROM SYS.ALL_SYNONYMS WHERE TABLE_OWNER = 'DBAUDIT'; 程序包 取得程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE'; 取得隸屬於某個用戶的程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE' AND OWNER = 'DBAUDIT'; 取得程序包內容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE'; 程序包體 取得程序包體可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY'; 取得隸屬於某個用戶的程序包可以用: SELECT OBJECT_NAME FROM SYS.ALL_OBJECTS WHERE OBJECT_TYPE = 'PACKAGE BODY ' AND OWNER = 'DBAUDIT'; 取得程序包內容可以用: SELECT TEXT FROM SYS.ALL_SOURCE WHERE NAME = 'XXX' AND TYPE = 'PACKAGE BODY '; 第三部分: 簡單點的還有。 返回所有列名 select name from syscolumns where id=object_id('表名') 查所有表名 select * from INFORMATION_SCHEMA.TABLES =================================== sp_tableoption N'MyTable', 'text in row', 'OFF' Sybase 取得資料庫名的方法 系統存儲過程sp_helpdb 或者 USE master SELECT d.name dbname, u.name owner FROM sysdatabases d, sysusers u WHERE d.suid = u.suid 取得表的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的用戶表: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'U' 獲取指定資料庫的系統表: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'S' 或者統一使用: USE DBAudit SELECT sysobjects.name AS tname, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'U' OR type = 'S') 註: sysobjects 中type 欄位類型解釋: C = CHECK 約束 D = 默認值或 DEFAULT 約束 F = FOREIGN KEY 約束 L = 日誌 FN = 標量函數 IF = 內嵌表函數 P = 存儲過程 PK = PRIMARY KEY 約束(類型是 K) RF = 復制篩選存儲過程 S = 系統表 TF = 表函數 TR = 觸發器 U = 用戶表 UQ = UNIQUE 約束(類型是 K) V = 視圖 X = 擴展存儲過程 取得列的方法 系統存儲過程 USE xxxDatabase EXEC sp_help xxxTable 取得視圖的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的視圖: USE xxx SELECT sysobjects.name AS name, sysusers.name AS owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND type = 'V' 獲取指定資料庫的視圖的內容: EXEC sp_helptext xxxObject 取得存儲過程的方法 系統存儲過程 USE xxx EXEC sp_help 或者 獲取指定資料庫的存儲過程或者擴展存儲過程: USE xxx SELECT sysobjects.name name, sysusers.name owner FROM sysobjects, sysusers WHERE sysobjects.uid = sysusers.uid AND (type = 'P' OR type = 'X') 獲取指定資料庫的存儲過程或者擴展存儲過程的內容: EXEC sp_helptext xxxObject 無法獲取加密的存儲過程。擴展存儲過程只能得到dll 程序名。 取得函數的方法 Sybase 不支持用戶定義函數。
㈨ JS 文件如何獲取資料庫中的數據
js是無法直接讀取資料庫中的數據,但是可以用伺服器端腳本與js搭配使用。
如:
<% String testStr = "HelloJava";%>
<script>
alert('<%=testStr%>');
</script>
因為服務端腳本是先運行的,Js是後運行在客戶端的。
所以可以先用服務端腳本讀取資料庫數據 然後放到js里再運行。
㈩ 怎樣獲得資料庫的數據
你是想獲得別人資料庫的內容,還是你自己做網站想把網頁和資料庫連接起來獲得自己資料庫的內容呢???
想弄別人的就難了。相連接自己的資料庫並獲得裡面的數據就簡單了。