java.sql.ResultSetMetaData
--------------------------------------------------------------------------------
public interface ResultSetMetaData
可用於獲取關於 ResultSet 對象中列的類型和屬性信息的對象。以下代碼片段創建 ResultSet 對象 rs,創建 ResultSetMetaData 對象 rsmd,並使用 rsmd 查找 rs 有多少列,以及 rs 中的第一列是否可以在 WHERE 子句中使用。
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
boolean b = rsmd.isSearchable(1);
以前寫過,沒有備份代碼,用java.sql.ResultSetMetaData很簡單就實現了,用rs.getMetaData();可生成其實現類的對象....
⑵ 通過java程序如何在已知表明的情況下獲得資料庫中該張表的表結構
public static void getConnAndTableStruct(){
Connection connection = null;
PreparedStatement pstmt = null;
ResultSetMetaData rsmd = null;
try {
//mysql連接
Class.forName("org.gjt.mm.mysql.Driver");
connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
//oracle連接
// Class.forName("oracle.jdbc.driver.OracleDriver");
// String url="jdbc:oracle:thin:@173.10.2.11:1521:test";
// connection=DriverManager.getConnection(url,"root","root");
pstmt = (PreparedStatement) connection.prepareStatement("select * from user");
pstmt.execute(); //這點特別要注意:如果是Oracle而對於mysql可以不用加.
rsmd = (ResultSetMetaData) pstmt.getMetaData();
className="User";
tableName="user";
for (int i = 1; i < rsmd.getColumnCount() + 1; i++) {
Table table=new Table();
table.setColumnName(rsmd.getColumnName(i));
table.setColumnType(rsmd.getColumnClassName(i).substring(rsmd.getColumnClassName
(i).lastIndexOf(".")+1));
tables.add(table);
System.out.println(rsmd.getColumnName(i)+ " " +rsmd.getColumnTypeName(i)
+" " +rsmd.getColumnClassName(i)+ " "+rsmd.getTableName(i));
}
}
catch (ClassNotFoundException cnfex) {
cnfex.printStackTrace();
}
catch (SQLException sqlex) {
sqlex.printStackTrace();
}
}
⑶ Java怎樣讀取ACCESS資料庫文件
1. jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};
2.使用ODBC建立WINDOW數據源的方法:
開始
>>控制面板
>>管理工具
>>數據源(ODBC)
>>用戶DSN或系統DSN
>>點添加
>>找到"Microsoft Access Driver (*.mdb)",選中,再點完成>>自定義數據源名稱,可創建一個新的或選擇已經有的Access資料庫(.mdb)其它可以不選
>>確定>>確定
到此數據源已經建立成功
最後使用jdbc的方法進行連接。
⑷ java怎樣讀取資料庫表中欄位的數據類型
Java獲取資料庫的表中各欄位的欄位名,代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class TestDemo {
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://資料庫IP地址:3306/資料庫名稱";
String user = "資料庫用戶名";
String pass = "資料庫用戶密碼";
conn = DriverManager.getConnection(url, user, pass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
Connection conn = getConnection();
String sql = "select * from AccessType";
PreparedStatement stmt;
try {
stmt = conn.prepareStatement(sql);
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData data = rs.getMetaData();
for (int i = 1; i <= data.getColumnCount(); i++) {
// 獲得所有列的數目及實際列數
int columnCount = data.getColumnCount();
// 獲得指定列的列名
String columnName = data.getColumnName(i);
// 獲得指定列的列值
int columnType = data.getColumnType(i);
// 獲得指定列的數據類型名
String columnTypeName = data.getColumnTypeName(i);
// 所在的Catalog名字
String catalogName = data.getCatalogName(i);
// 對應數據類型的類
String columnClassName = data.getColumnClassName(i);
// 在資料庫中類型的最大字元個數
int columnDisplaySize = data.getColumnDisplaySize(i);
// 默認的列的標題
String columnLabel = data.getColumnLabel(i);
// 獲得列的模式
String schemaName = data.getSchemaName(i);
// 某列類型的精確度(類型的長度)
int precision = data.getPrecision(i);
// 小數點後的位數
int scale = data.getScale(i);
// 獲取某列對應的表名
String tableName = data.getTableName(i);
// 是否自動遞增
boolean isAutoInctement = data.isAutoIncrement(i);
// 在資料庫中是否為貨幣型
boolean isCurrency = data.isCurrency(i);
// 是否為空
int isNullable = data.isNullable(i);
// 是否為只讀
boolean isReadOnly = data.isReadOnly(i);
// 能否出現在where中
boolean isSearchable = data.isSearchable(i);
System.out.println(columnCount);
System.out.println("獲得列" + i + "的欄位名稱:" + columnName);
System.out.println("獲得列" + i + "的類型,返回SqlType中的編號:"+ columnType);
System.out.println("獲得列" + i + "的數據類型名:" + columnTypeName);
System.out.println("獲得列" + i + "所在的Catalog名字:"+ catalogName);
System.out.println("獲得列" + i + "對應數據類型的類:"+ columnClassName);
System.out.println("獲得列" + i + "在資料庫中類型的最大字元個數:"+ columnDisplaySize);
System.out.println("獲得列" + i + "的默認的列的標題:" + columnLabel);
System.out.println("獲得列" + i + "的模式:" + schemaName);
System.out.println("獲得列" + i + "類型的精確度(類型的長度):" + precision);
System.out.println("獲得列" + i + "小數點後的位數:" + scale);
System.out.println("獲得列" + i + "對應的表名:" + tableName);
System.out.println("獲得列" + i + "是否自動遞增:" + isAutoInctement);
System.out.println("獲得列" + i + "在資料庫中是否為貨幣型:" + isCurrency);
System.out.println("獲得列" + i + "是否為空:" + isNullable);
System.out.println("獲得列" + i + "是否為只讀:" + isReadOnly);
System.out.println("獲得列" + i + "能否出現在where中:"+ isSearchable);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
⑸ java怎麼把資料庫的數據取出來
java 對讀取資料庫的數據可以顯示在網頁上,可以對數據進行分類,保存到其它資料庫或者是文件里等,當然前提就是要把數據讀取出來
以讀取數據為例:
解析:
上面代碼就是首先注冊驅動,然後進行連接
如果連接成功
就可以用select語句進行執行並讀取了
⑹ java樹形結構如何從資料庫讀取數據
定義一個TreeNode類.裡面有
id 自身id
parentId 父節點id
name 樹顯示文本
url 鏈接地址
open 是否展開樹
等屬性.
將從資料庫查出來的數據一個個set到TreeNode裡面.封裝成一個List<TreeNode>.
再將這個List轉換成你的樹所需要的格式內容.比如json格式
⑺ java如何讀取access資料庫
雖然簡單,對初學者來說,如果沒有一段可以成功執行的代碼供參考,還真難調試
先用ACCESS建一個資料庫 DB1.MDB,裡面有一表"table1",內有欄位"Name"和"Age"
隨便填幾條記錄,保存後到ODBC里建一個系統數據源"Access2000"連上此資料庫
然後就可以用下面的代碼顯示資料庫里的所有記錄了
database.java
------------------
import java.sql.*;
class database {
public static void main(String args[]) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:Access2000";
Connection connection=DriverManager.getConnection(url);
Statement statement = connection.createStatement();
String sql="SELECT * FROM table1";
ResultSet rs = statement.executeQuery(sql);
String tt;
while (rs.next()) {
System.out.print("姓名:" + rs.getString("Name"));
System.out.println(" 年齡:" + rs.getString("Age"));
}
rs.close();
connection.close();
}
catch(Exception ex){
System.out.println(ex);
System.exit(0);
}
}
}
------------
OK,編譯運行:
E:/java>javac database.java
E:/java>java database
⑻ java程序讀取db2資料庫中所有數據表以及表數據,創建到mysql資料庫中
因為我沒有轉載DB2 所以沒有辦法幫你寫出具體的sql語句,也不能測試.我oracle 為例吧.
1.不管java 連接那個資料庫都是一樣的.
Class.forName(dir);
String url = "";//資料庫名,用戶名和密碼
Connection conn = DriverManager.getConnection(url);
Statement stat = conn.createStatement();
// 執行你想要執行的sql語句.下面是查詢,修改和刪除有點不一樣.
ResultSet rs = stat.executeQuery(sql);
你可以通過select table_name from user_tables; 這個sql語句查詢才出資料庫裡面所有的表.
再通過 select * from ALL_TAB_COLS A where lower(A.Table_Name) = '表名' 查詢出某一個表的相關信息.這樣是有點繁瑣,不過不失為一種解決方法.
2 .讀取數據就更容易了.
直接執行select 就可以了.
3. 幫剛剛讀出來的表結構組裝成建表語句. create 一下就可以了.
4.關於數據類型我也不是很清楚,你可以在網上查一查db2有哪些數據類型.然後在建表的時候做一下兒轉換就可以了.
5.你說的也就是把剛剛查詢出來的數據插入到資料庫中.insert 就可以了.
其實java 操作資料庫很簡單的.不同於c.查詢出來後,做適當的組裝處理.就可以得到你想要的結果.
希望對你有幫助.
⑼ 在JAVA中操作oracle資料庫,在不知道表結構的情況下如何讀取數據顯示在jsp頁面上
首先你要先得到表結構,就是各個欄位名,通過這些欄位來組織SQL語句查詢,數據放在字元串數組中,頁面取的時候循環出來就OK了,希望能幫到你
⑽ java 獲取mysql 某個資料庫中所有表及表的列的信息
mysql裡面提供了很多方法來獲取表結構和表列:如下方法
獲得某表所有列的信息:
String sql = select * from tname;//tname為某一表名
Connection conn = ....;
Statement st = conn.createStatement();
ResultSet rs = st.rs = st.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int colcount = rsmd.getColumnCount();//取得全部列數
for(int i=0;i<colcount;i++){
String colname = rsmd.getColumnName(i);//取得全部列名
}
以上為某表欄位具體查詢,如果是查詢表的信息,如在mysql伺服器上那樣的查詢結果的話,可以用一下代碼:
ResultSet.executeQuery("show tables")可以的到所有的表信息。
ResultSet.executeQuery("describe tname")可以得到表的欄位信息。//tname為表名