① 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如何訪問資料庫
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() ;
}
}
③ java線程讀取資料庫
//將資料庫中的數據條數分段
public void division(){
//獲取要導入的總的數據條數
String sql3="SELECT count(*) FROM [CMD].[dbo].[my1]";
try {
pss=cons.prepareStatement(sql3);
rss=pss.executeQuery();
while(rss.next()){
System.out.println("總記錄條數:"+rss.getInt(1));
sum=rss.getInt(1);
}
//每30000條記錄作為一個分割點
if(sum>=30000){
n=sum/30000;
resie=sum%30000;
}else{
④ 如何在java 中讀取資料庫的數據
讀取資料庫最基礎的可以使用JDBC連接資料庫讀取數據
jdbc方式連接資料庫查詢數據:http://www.cnblogs.com/GarfieldEr007/p/5746137.html
當然也有其他的方式 比如Hibernate\mybatis\ibatis\jpa等等 架構都可以 這你可以後面去查詢資料學習
你可以先看JDBC吧
⑤ 怎麼在java中讀取mysql資料庫
要看你是用框架還是傳統的JDBC連接了,如果是傳統的JDBC連接的話方法如下:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//載入資料庫驅動,不同資料庫載入的驅動不一樣,這個例子是sqlserver資料庫
Stringurl="jdbc:sqlserver://127.0.0.1:1433;databaseName=testDB";//IP:埠;databaseName:資料庫名
Stringsql="selectnamefromt_user";//sql查詢語句
Connectioncon=DriverManager.getConnection(url,username,password);//url:
資料庫連接串userName:資料庫登錄賬號passWord:資料庫登錄密碼
Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSetrs=stmt.executeQuery(sql);
//用戶對象集合
List<User>userList=newArrayList<User>();
while(rs.next()){
Useruser=newUser();
user.setName=rs.getString("name");
userList.add(user);
}
⑥ java獲取資料庫數據
1、對應資料庫中的表創建實體類(entity),封裝a、b、c等欄位。
2、使用jdbc查詢資料庫,一行數據對應一個實體對象,放進一個集合List<entity>中。
⑦ java如何訪問資料庫
JAVA連接資料庫的方式有多種:
根據所需要的不同資料庫驅動分,分為四種:
1:1類驅動。這就是JDBC-ODBC橋的方式。但這種方式不適合程序的重用與維護,不推薦使用。需要資料庫的ODBC驅動。
2:2類驅動。這就是JDBC+廠商API的形式。廠商API一般使用C編寫,所以,這種方式也不長使用。
3:3類驅動。這就是JDBC+廠商Database
Connection
Server+DataBase的形式。
這種方法就是在JAVA
與
DATABASE之間價起了一台專門用與資料庫連接的伺服器(一般由資料庫廠商提供)。他的好處在於能優化連接。
4:4類驅動。這就是純JDBC+DATABASE的連接方式。也是推薦的連接方式。這使得APPLICATION與資料庫分開,開發者只需關心內部邏輯的實現而不需注重資料庫連接的具體實現。在這其中有兩種連接的方式:
硬編碼方式,就是在程序中硬性編入資料庫連接的所須參數。
JNDI
DataSource方式。就是在程序運行的外布環境中又稱(Context)設置一個datasource數據源,有一個jndi
名稱,程序只須查找此名稱就可得到一個資料庫連接的對象。
⑧ Java讀取資料庫的步驟。
代碼送上,已經封裝好,調用就可
import java.util.List;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
public class BaseDao {
/**
* 連接對象
*/
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
private CachedRowSet crs;
public Connection getConnection() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
try {
String url = "jdbc:sqlserver://localhost:1104;DatabaseName=nongchang";
conn = DriverManager.getConnection(url, "sa", "8384285");
} catch (SQLException sqle) {
sqle.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
private final void closePstmt() {
try {
if (pstmt != null)
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉Connection對象
*/
private final void closeCon() {
try {
if (conn != null) {
closePstmt();
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 關閉Connection對象,帶Rs
*
* @param ResultSet
*/
private final void closeResultSet(ResultSet rs) {
try {
rs.close();
closeCon();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 執行增刪改操作
*
* @param sql
* 增刪改sql語句
* @param values
* 參數對象數組
* @return int 影響行數
*/
public int executeUpdate(String sql, Object... values) {
if (values == null || values.length == 0) {
return update(sql);
} else {
return update(sql, values);
}
}
private int update(String sql) {
int i = 0;
try {
pstmt = getConnection().prepareStatement(sql);
i = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeCon();
}
return i;
}
private int update(String sql, Object... values) {
int k = 0;
try {
pstmt = getConnection().prepareStatement(sql);
for (int i = 0; i < values.length; i++)
pstmt.setObject(i + 1, values[i]);
k = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeCon();
}
return k;
}
/**
* 執行查詢操作
*
* @param sql
* 查詢sql語句
* @param values
* 參數對象數組
* @return CachedRowSet 結果集緩存
*/
public CachedRowSet executeQuery(String sql, Object... values) {
if (values == null || values.length == 0) {
return query(sql);
} else {
return query(sql, values);
}
}
private CachedRowSet query(String sql) {
try {
crs = new CachedRowSetImpl();
pstmt = getConnection().prepareStatement(sql);
rs = pstmt.executeQuery();
crs.populate(rs);
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeResultSet(rs);
}
return crs;
}
private CachedRowSet query(String sql, Object... values) {
try {
crs = new CachedRowSetImpl();
pstmt = getConnection().prepareStatement(sql);
for (int i = 0; i < values.length; i++)
pstmt.setObject(i + 1, values[i]);
rs = pstmt.executeQuery();
crs.populate(rs);
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeResultSet(rs);
}
return crs;
}
}
⑨ Java如何獲取資料庫中的數據·案例
下面是一個從 mysql 數據獲取用戶數據的案例,可以參考一下:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;
//用戶類,存儲單個用戶信息
classUser{
privateintid;
privateStringname;
publicUser(intid,Stringname){
this.id=id;
this.name=name;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
@Override
publicStringtoString(){
return"User[id="+id+",name="+name+"]";
}
}
publicclassDemo1{
publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{
//本例使用mysql資料庫,演示將資料庫test的tb_users表中的用戶信息
//放到List中
//載入數據驅動
Class.forName("com.mysql.jdbc.Driver");
//資料庫連接字元串,此例資料庫為test
Stringurl="jdbc:mysql://localhost:3306/test";
Stringuser="root"; //資料庫用戶名
Stringpassword=""; //資料庫密碼
//打開一個數據連接
Connectionconn=DriverManager.getConnection(url,user,password);
Statementstmt=conn.createStatement();
//獲取表tb_users所有用戶信息到結果集中
ResultSetrs=stmt.executeQuery("SELECTid,nameFROMtb_users");
//定義一個存放用戶信息的List
List<User>users=newArrayList<>();
//提取用戶信息,並將用戶信息放入List
while(rs.next()){
//獲取用戶ID
intid=rs.getInt(1);
//獲取用戶名
Stringname=rs.getString(2);
users.add(newUser(id,name));
}
rs.close();
stmt.close();
conn.close();
//顯示用戶信息
for(Useru:users){
System.out.println(u);
}
}
}