A. java用JDBC連接資料庫的時候,如何部署驅動包
把資料庫驅動提供的jar包復制:1,工程lib下;2,tomcat
下的common下的lib中;這樣就ok了,剛開始我也遇到這樣的問題了。哈哈
B. java jdbc如何使用
給你看個簡單的例子吧:
public class DBUtil {
/**
* 獲取資料庫連接
*
* @return
*/
public static Connection getConn() {
Connection con = null;
//驅動
String className = "";
//url連接路徑
String url = "";
//用戶名
String username = "";
//密碼
String password = "";
try {
className = DBUtil.getValue("/jdbc.properties", "jdbc.driverClassName");
url = DBUtil.getValue("/jdbc.properties", "jdbc.url");
username = DBUtil.getValue("/jdbc.properties", "jdbc.username");
password = DBUtil.getValue("/jdbc.properties", "jdbc.password");
} catch (IOException e1) {
e1.printStackTrace();
}
try {
Class.forName(className);
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
String u = url+"?user="+username+"&password="+password+"&useUnicode=true&characterEncoding=UTF8";
try {
con = DriverManager.getConnection(u);
} catch (SQLException e) {
e.printStackTrace();
}
return con;
}
/**
* 關閉連接資源
*
* @param pst
* @param conn
*/
public static void getClose(PreparedStatement pst, Connection conn) {
try {
if (pst != null) {
pst.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 獲取jdbc配置文件內的屬性值
* @param fileNamePath 配置文件路徑
* @param key 欄位名
* @return
* @throws IOException
*/
public static String getValue(String fileNamePath, String key)
throws IOException {
Properties props = new Properties();
InputStream in = null;
try {
// in = new FileInputStream(fileNamePath);
// 如果將in改為下面的方法,必須要將.Properties文件和此class類文件放在同一個包中
in = DBUtil.class.getResourceAsStream(fileNamePath);
props.load(in);
String value = props.getProperty(key);
// 有亂碼時要進行重新編碼
// new String(props.getProperty("name").getBytes("ISO-8859-1"),
// "GBK");
return value;
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
if (null != in)
in.close();
}
}
}
jdbc.properties:
jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/XXX
jdbc.username = XXX
jdbc.password = XXX
public class CycleTask extends TimerTask{
PreparedStatement pst = null;
ResultSet rs = null;
Connection conn = null;
@Override
public void run() {
conn = DBUtil.getConn();
StringBuffer sb = new StringBuffer();
sb.append(" INSERT INTO P_SB_TEMP(SB_ID,TEMP_SB,TEMP_HJ,REMARK,DW,ADDTIME) ");
sb.append(" VALUES(?,?,?,?,?,?) ");
try{
pst = conn.prepareStatement(sb.toString());
int index = 1;
pst.setString(index++, "1");
pst.setString(index++, "2");
pst.setString(index++, "3");
pst.setString(index++, "4");
pst.setString(index++, "5");
pst.setTimestamp(index++, new Timestamp(2011, 12, 12, 12, 12, 12, 00));
pst.execute();
}catch (SQLException e1) {
e1.printStackTrace();
}
DBUtil.getClose(pst, conn);
}
}
}
你去試試的
C. Java常用包有哪些
1.Java.lang包
這個包下包含了Java語言的核心類,如String、Math、Sytem和Thread類等,使用這個包無需使用import語句導入,系統會自動導入這個包中的所有類。
2.Java.util包
這個包下包含java的大量工具類/介面和集合框架類/介面。如Arrays和List、Set等。
3.Java.net包
這個包下包含了一些Java網路編程相關的類/介面。
4.java.io包
這個包含了一些Java輸入/輸出編程相關的類/介面。
5.java.text包
這個包下包含一些Java格式化相關的類。
6.java.sql包
這個包下包含了java進行JDBC資料庫編程的相關類/介面。
7.java.awt包
這個包下包含了抽象窗口工具集(Abstract Window Toolkits) 的相關類/介面,這些類主要用於構建圖形用戶界面(GUI)程序。
8.java.swing包
這個包下包含了Swing圖形用戶界面編程的相關類/介面,這些可用於構建平台無關的GUI程序。
D. JAVA JDBC驅動使用JDBC包 如何新建一個Connection
代碼參考:
(){
try{
Class.forName("com.mysql.jdbc.Driver");
Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/databasename","username","password");
returnconn;
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
class.forName("com.mysql.jdbc.Driver");用來注冊jdbc驅動。
DriverManager.getConnection用來獲得資料庫連接,參數中,databasename是要連接的資料庫名,username是資料庫用戶名,password是對應的該用戶名的密碼。
E. java jdbc資料庫驅動包在哪個位置了
不同的資料庫針對Java開發調用都提供了相應的驅動,一般命名為*.jar,所在的位置一般是lib目錄中。如果是在window下開發,也沒有驅動,則可以通過ODBC,然後通過JDBC-ODBC的方式與資料庫通信。
F. Java裡面的JDBC是什麼意思啊
Java資料庫連接是Java語言中用來規范客戶端程序如何來訪問資料庫的應用程序介面,提供了諸如查詢和更新資料庫中數據的方法。JDBC也是Sun Microsystems的商標。我們通常說的JDBC是面向關系型資料庫的。
這種類型的驅動把所有JDBC的調用傳遞給ODBC,再讓後者調用資料庫本地驅動代碼(也就是資料庫廠商提供的資料庫操作二進制代碼庫,例如Oracle中的oci.dll)。
API概述
JDBC API主要位於JDK中的java.sql包中(之後擴展的內容位於javax.sql包中),主要包括(斜體代表介面,需驅動程序提供者來具體實現):
DriverManager:負責載入各種不同驅動程序(Driver),並根據不同的請求,向調用者返回相應的資料庫連接(Connection)。Driver:驅動程序,會將自身載入到DriverManager中去,並處理相應的請求並返回相應的資料庫連接(Connection)。Connection:資料庫連接,負責與進行資料庫間通訊,SQL執行以及事務處理都是在某個特定Connection環境中進行的。
可以產生用以執行SQL的Statement。Statement:用以執行SQL查詢和更新(針對靜態SQL語句和單次執行)。PreparedStatement:用以執行包含動態參數的SQL查詢和更新(在伺服器端編譯,允許重復執行以提高效率)。CallableStatement:
用以調用資料庫中的存儲過程。SQLException:代表在資料庫連接的建立和關閉和SQL語句的執行過程中發生了例外情況(即錯誤)。
G. Java用JDBC連接資料庫的時候,如何部署驅動包
Java用JDBC連接資料庫的時候部署驅動包方法:
1.選中項目,然後選擇Build Path,選擇Configure Build Path;
2.進入配置之後,點擊Libraries,點擊Add External JARs;
3.找到驅動包,點擊打開,添加加入之後,點擊OK即可。
H. JAVA JDBC驅動使用JDBC包 如何新建一個Connection
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:1433/JTDS", "name", "password");
return conn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
name password填寫用戶名和密碼
I. 徹底搞懂JDBC的運行過程
前幾天筆者發布了博客,手寫mybatis徹底搞懂框架原理。為了幫助初學者更好理解mybatis框架,這次講解一下Java的JDBC的運行過程。
JDBC的作用
JDBC的全稱是Java DataBase Connection,也就是Java資料庫連接,我們可以用它來操作關系型資料庫。JDBC介面及相關類在java.sql包和javax.sql包里。我們可以用它來連接資料庫,執行SQL查詢,存儲過程,並處理返回的結果。
JDBC介面讓Java程序和JDBC驅動實現了松耦合,使得切換不同的資料庫變得更加簡單。
JDBC的連接步驟
執行一次JDBC連接,分六個步驟進行:
1. 導入包
在程序中包含資料庫編程所需的JDBC類。大多數情況下,使用 import java.sql.* 就足夠了
2. 注冊JDBC驅動程序
需要初始化驅動程序,這樣就可以打開與資料庫的通信。
3. 打開一個連接
使用DriverManager.getConnection()方法來創建一個Connection對象,它代表一個資料庫的物理連接。
4. 執行一個查詢
需要使用一個類型為Statement或PreparedStatement的對象(兩者區別看後文),並提交一個SQL語句到資料庫執行查詢。
5. 從結果集中提取數據
這一步中演示如何從資料庫中獲取查詢結果的數據。使用ResultSet.getXXX()方法來檢索的數據結果
6. 清理環境資源
在使用JDBC與數據交互操作資料庫中的數據後,應該明確地關閉所有的資料庫資源以減少資源的浪費。本文使用了try with resources方式關閉資源,這是JDK7的語法糖,讀者可自行搜索。
完整代碼如下。
JDBC的最佳實踐
JDBC是如何實現Java程序和JDBC驅動的松耦合?
JDBC API使用Java的反射機制來實現Java程序和JDBC驅動的松耦合。看一下上文的JDBC示例,你會發現所有操作都是通過JDBC介面完成的,而驅動只有在通過Class.forName反射機制來載入的時候才會出現。
這是Java核心庫里反射機制的最佳實踐之一,它使得應用程序和驅動程序之間進行了隔離,讓遷移資料庫的工作變得更簡單。
Statement和PreparedStatement區別
預編譯
創建時的區別:
執行時的區別:
由上可以看出,PreparedStatement有預編譯的過程,已經綁定sql,之後無論執行多少次,都不會再去進行編譯,而Statement 不同,如果執行多次,則相應的就要編譯多少次sql,所以從這點看,PreparedStatement的效率會比Statement要高一些。PreparedStatement是預編譯的,所以可以有效的防止SQL注入等問題
佔位符
PrepareStatement可以替換變數在SQL語句中可以包含?,可以用?替換成變數。
而Statement只能用字元串拼接。
JDBC的ResultSet
在查詢資料庫後會返回一個ResultSet,它就像是查詢結果集的一張數據表。
ResultSet對象維護了一個游標,指向當前的數據行。開始的時候這個游標指向的是第一行。如果調用了ResultSet的next()方法游標會下移一行,如果沒有更多的數據了,next()方法會返回false。可以在for循環中用它來遍歷數據集。
默認的ResultSet是不能更新的,游標也只能往下移。也就是說你只能從第一行到最後一行遍歷一遍。不過也可以創建可以回滾或者可更新的ResultSet,像下面這樣。
當生成ResultSet的Statement對象要關閉或者重新執行或是獲取下一個ResultSet的時候,ResultSet對象也會自動關閉。
可以通過ResultSet的getter方法,傳入列名或者從1開始的序號來獲取列數據。
ResultSet的不同類型
根據創建Statement時輸入參數的不同,會對應不同類型的ResultSet。如果你看下Connection的方法,你會發現createStatement和prepareStatement方法重載了,以支持不同的ResultSet和並發類型。
ResultSet對象有三種類型。
ResultSet有兩種並發類型。
J. 在java中 jdbc api定義了一組用於資料庫進行通信的介面和類 他們包括在什麼包中.
首先需要導入相應資料庫的驅動文件,然後要注冊驅動,class.forname(drivername),獲取connection對象connection
conn=drivermanager.getconnection(url);然後獲取preparedstatement對象preparedstatement
pst=conn.getpreparedstate(sql,username,password)其中的username和password是你訪問資料庫的名稱和密碼;如果要使用到返回集合則可以用resultset對象接收,resultset
rs=pst.executequery();不要使用到返回集合的話就直接pst.executequery();
以上的可以查jdk
1.mysql:drivername的值為:com.mysql.jdbc.driver;url的值為:jdbc:mysql://localhost:3306/hibernate其中hibernate是你的資料庫名稱
2.sqlserver:drivername的值為:com.microsoft.sqlserver.jdbc.sqlserverdriver;url的值為
jdbc:sqlserver://localhost:1433;databasename="
+
database,其中database是你資料庫名稱
3.oracle:drivername的值為:oracle.jdbc.driver.oracledriver;url的值:jdbc:oracle:thin:@127.0.0.1:1521:ora92,其中ora92是你資料庫名稱