java獲取資料庫表欄位
你用的是什麼資料庫?
哦...呵呵剛沒注意標題...
這個我以前寫的,
假設你的用戶名和密碼都是root,你看下吧,不過在運行之前要先導入連接的那個jar文件
import java.sql.*;
public class TestConnectMySQL {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance(); // new一個Driver
conn = DriverManager.getConnection("jdbc:mysql://localhost/A?" //連接MySQL 不理解就記住
+ "user=root&password=root");
stmt = conn.createStatement(); //通過連接創建(createStatement)一個語句對象,不是new
rs = stmt.executeQuery("select * from pers"); //執行查詢,返回一個結果集rs相當於一個游標
while (rs.next()) { //循環取得結果集(遍歷)
System.out.println(rs.getString("b") + " " //把某一欄位的內容 當成一個字元串拿出來,
+ rs.getString("c") + " " //也可以用其它的,比如rs.getInt("");等
+ rs.getString("d"));
}
} catch (SQLException ex) {
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally { //不要忘了關閉
try {
if (conn != null) {
conn.close();
conn = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (rs != null) {
rs.close();
rs = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
② 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 獲取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為表名
④ java如何獲取mysql資料庫表的欄位的名稱
用java是不能修改表結構的,你增加和刪除欄位,是屬於修改表結構。
用語句修改表結構只能在資料庫執行sql。
增加欄位
alter table 表名 add 增加的表欄位名稱 增加欄位的數據類型。
刪除欄位
alter table 表名 drop column 要刪除的欄位名稱.
查詢表的各個欄位信息。
select * from syscolumns where id=(select id from sysobjects where name='表名')
⑤ Java JDBC資料庫查詢表和欄位
可以用下面的方式獲取,把tableName換成你的表名,有些資料庫也可以直接使用Sql查詢表列名
ResultSet resultSet = statement.executeQuery("select * from tableName");
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
for(int i=0; i<resultSetMetaData.getColumnCount(); i++) {
System.out.print( resultSetMetaData.getColumnLabel(i) + "\t" );
System.out.print( resultSetMetaData.getColumnName(i) + "\t" );
System.out.println( resultSetMetaData.getColumnTypeName(i) );
}
⑥ java怎樣獲取一個表中的欄位名
java獲取不了,可是jdbc是資料庫廠商提供的,會訪問內部表,系統表返回欄位名。
⑦ java如何獲得資料庫表中各欄位的欄位名
Java獲取資料庫的表中各欄位的欄位名,代碼如下:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.PreparedStatement;
importjava.sql.ResultSetMetaData;
importjava.sql.SQLException;
publicclassTestDemo{
(){
Connectionconn=null;
try{
Class.forName("com.mysql.jdbc.Driver");
Stringurl="jdbc:mysql://資料庫IP地址:3306/資料庫名稱";
Stringuser="資料庫用戶名";
Stringpass="資料庫用戶密碼";
conn=DriverManager.getConnection(url,user,pass);
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
returnconn;
}
publicstaticvoidmain(String[]args){
Connectionconn=getConnection();
Stringsql="select*fromAccessType";
PreparedStatementstmt;
try{
stmt=conn.prepareStatement(sql);
ResultSetrs=stmt.executeQuery(sql);
ResultSetMetaDatadata=rs.getMetaData();
for(inti=1;i<=data.getColumnCount();i++){
//獲得所有列的數目及實際列數
intcolumnCount=data.getColumnCount();
//獲得指定列的列名
StringcolumnName=data.getColumnName(i);
//獲得指定列的列值
intcolumnType=data.getColumnType(i);
//獲得指定列的數據類型名
StringcolumnTypeName=data.getColumnTypeName(i);
//所在的Catalog名字
StringcatalogName=data.getCatalogName(i);
//對應數據類型的類
StringcolumnClassName=data.getColumnClassName(i);
//在資料庫中類型的最大字元個數
intcolumnDisplaySize=data.getColumnDisplaySize(i);
//默認的列的標題
StringcolumnLabel=data.getColumnLabel(i);
//獲得列的模式
StringschemaName=data.getSchemaName(i);
//某列類型的精確度(類型的長度)
intprecision=data.getPrecision(i);
//小數點後的位數
intscale=data.getScale(i);
//獲取某列對應的表名
StringtableName=data.getTableName(i);
//是否自動遞增
booleanisAutoInctement=data.isAutoIncrement(i);
//在資料庫中是否為貨幣型
booleanisCurrency=data.isCurrency(i);
//是否為空
intisNullable=data.isNullable(i);
//是否為只讀
booleanisReadOnly=data.isReadOnly(i);
//能否出現在where中
booleanisSearchable=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(SQLExceptione){
e.printStackTrace();
}
}
}
⑧ java中如何得到資料庫中表的欄位類型
經過access測試,ok
String url = "jdbc:odbc:test";//最後一個為資料庫名
Statement sm = null;
String command = null;
ResultSet rs = null;
String tableName = null;
String cName = null;
String result = null;
String []pram = new String[1];
List <String> tables = new ArrayList<String>();
pram[0] = "table";
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
try {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // 載入驅動
} catch (ClassNotFoundException e) {
System.out.println("Can not load Jdbc-Odbc Bridge Driver");
System.err.print("ClassNotFoundException:");
System.err.println(e.getMessage());
}
Connection con = DriverManager.getConnection(url, "admin", "admin"); // 連接到資料庫
DatabaseMetaData dm = con.getMetaData();
rs = dm.getTables(null, null, null, pram);//查找所有的表
while(rs.next()){
tables.add(rs.getString(3));
}
rs.close();
for(String tb : tables){
rs = dm.getColumns(null, null, tb, null);//查找當前表的欄位
System.out.println("\nthe table is: " + tb);
ResultSetMetaData rsmd = rs.getMetaData();
int len, type;
len = rsmd.getColumnCount();
// System.out.println(len);
for(int i = 1; i <= len; i ++){
type = rsmd.getColumnType(i);
//這里是獲取了一個欄位類型的int型,需要轉化成string的話要做一個swtich,就不轉了,你自己看java.sql.Types這個類去
System.out.print("\t" + rsmd.getColumnName(i) + ": " + rsmd.getColumnType(i));
}
}
rs.close();
con.close();
// }
} catch (SQLException ex) {
System.out.println("SQLException:");
while (ex != null) {
System.out.println("Message:" + ex.getMessage());
ex = ex.getNextException();
}
} catch (Exception e) {
System.out.println("IOException");
}
⑨ java獲取資料庫數據
1、對應資料庫中的表創建實體類(entity),封裝a、b、c等欄位。
2、使用jdbc查詢資料庫,一行數據對應一個實體對象,放進一個集合List<entity>中。
⑩ java中定義一個類,主要從資料庫中獲取欄位怎麼編寫
首先連接資料庫,你也沒說什麼資料庫,給你三種連接,
package com.cai.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties ;
public class ConnectionUtil {
/**
* 1
*在方法中固化連接參數
* @return 資料庫連接
*/
public Connection getConnection(){
Connection conn = null ;
try{
Class.forName("com.mysql.jdbc.Driver") ;
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stud", "root", "root") ;
return conn ;
}catch(Exception e){
e.printStackTrace() ;
}
return null ;
}
/**
* 2
*通過方法參數方式傳遞連接參數
* @return 資料庫連接
*/
public Connection getConnection(String driver, String url, String user, String password){
Connection conn = null ;
try{
Class.forName(driver) ;
conn = DriverManager.getConnection(url, user, password) ;
return conn ;
}catch(Exception e){
e.printStackTrace();
}
return null ;
}
/**
* 3
*通過properties配置文件的方式靈活配置連接參數,properties中的屬性名固化
* @return 資料庫連接
*/
public Connection openConnection(){
Connection conn = null ;
String driver = "" ;
String url = "" ;
String user = "" ;
String password = "" ;
Properties props = new Properties() ;
try{
props.load(this.getClass().getClassLoader().getResourceAsStream("DBConfig.properties")) ;
driver = props.getProperty("driver") ;
url = props.getProperty("url") ;
user = props.getProperty("user") ;
password = props.getProperty("password") ;
Class.forName(driver) ;
conn = DriverManager.getConnection(url, user, password) ;
return conn ;
}catch(Exception e){
e.printStackTrace() ;
}
return null ;
}
public static void main(String []args){
ConnectionUtil cu = new ConnectionUtil() ;
System.out.println("1、---->" + cu.getConnection()) ;
System.out.println("2、---->" + cu.getConnection("com.mysql.jdbc.Driver",
"jdbc:mysql://localhost:3306/stud", "root", "root")) ;
System.out.println("3、---->" + cu.openConnection()) ;
}
}
連接上資料庫就可以操作數據了,在寫sql語句 根據sql執行就有返回相應欄位值了