『壹』 使用JDBC訪問資料庫時,下列關於JDBC的說法正確的是( )
《使用Java實現面向對象編程》階段測試-筆試試卷
一、選擇題(共25題,每題4分,滿分100分)
1)下列選項中關於Java中ArrayList、LinkedList、HashMap三個類的描述錯誤的是( )。
A.ArrayList和LinkedList均實現了List介面
B.ArrayList的訪問速度比LinkedList快
C.添加和刪除元素時,ArrayList的表現更佳
D.HashMap實現Map介面,它允許任何類型的鍵和值對象,允許將null用作鍵或值
2)關於Java中的集合實現類,下列說法描述錯誤的是( )。
A.HashMap是Map介面的實現類
B.ArrayList對象是長度可變的對象引用數組
C.集合框架都包含三大塊內容:對外的介面、介面的實現和對集合運算的演算法
D.Set中存儲一組不允許重復、有序的對象
3)對於Java中的集合類java.util.ArrayList,以下說法正確的是( )。
A.這個集合中的元素是無序的
B.可以通過鍵來獲取這個集合中的元素
C.在對這個集合的元素執行遍歷操作時,效率比較高
D.可以通過addFirst()方法,在列表的首部插入元素
4)給定如下Java代碼,其中第( )行代碼有錯誤。
import java.util.*;
public class MapTest {
public static void main(String[] args) {
List pList = new ArrayList();
pList.add("A"); //第五行
pList.add("B"); //第六行
for (int i = 0; i < pList.size(); i++) { //第七行
String str = pList.get(i); //第八行
System.out.print(str);
}
}
}
A.五
B.六
C.七
D.八
5)給定如下Java代碼,可以填入橫線處的代碼是( )。
import java.util.*;
public class Test {
public static void main(String[] args) {
________
list.addLast("001");
}
}
A.List list = new ArrayList();
B.List list = new List();
C.ArrayList list = new ArrayList();
D.LinkedList list = new LinkedList();
6)在Java中,( )類的對象可被用作堆棧或者隊列。
A.LinkedList
B.ArrayList
C.Collection
D.HashMap
7)關於Threads哪些描述是正確的( )
線程可以創建唯一的子類java.lang.Thread。
調用suspend()方法可以使線程中止並且無法再啟動它。
程序的執行完畢是以用戶線程的結束來標志的,與超級線程無關。
不同線程對相同數據進行訪問時,可能造成數據毀損。
8)下面哪個選項可以正確地建立文件file.txt?( )
File f = new File(「D:\text」, 「file.txt」);
File f = new File(「D:\\text」, 「file.txt」);
File f = new File(「file.txt」, 「D:/text」);
File f = new File(「D:/text」, 「file.txt」);
9)在Java中,JDBC API定義了一組用於與資料庫進行通信的介面和類,它們包括在( )包中。
A.java.lang
B.java.sql
C.java.util
D.java.math
10) 使用JDBC訪問資料庫時,下列關於JDBC的說法正確的是( )。
A.Connection介面負責執行SQL語句
B.可以使用Class.forName()方法把JDBC驅動類裝載入Java虛擬機中
C.Statement介面由Connection產生負責保存返回的查詢結果
D.DriverManager類負責連接資料庫並傳送數據
11)
『貳』 使用jdbc怎麼獲取資料庫連接
package club.di6.util;
import java.sql.DriverManager;
import java.sql.Connection;
public class DatabaseUtil {
public static Connection getConnection(){
Connection conn = null;
String serviceAddress = "//localhost:3306";//資料庫地址
String username = "root";//資料庫用戶
String password = "rr123456";//密碼
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql:"+serviceAddress+"/briup?user="+username+"&password="+password;
conn = DriverManager.getConnection(url);
System.out.println("資料庫連接成功");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
使用的時候直接Connection conn = DatabasesUtil.getConnection();就可以了
記得把裡面的資料庫地址和用戶名密碼改成自己的。
『叄』 jdbc連接資料庫步驟都有哪些
A、載入驅動程序(識別並連接資料庫)
種類:jdbc-odbc橋驅動
主入口程序名:sun.jdbc.odbc.JdbcOdbc
純java驅動
oracle.jdbc.driver.OracleDriver
B、
定義JDBC
URL(詳細定位要訪問的資料庫的信息)
組成-
-
jdbc協議:子協議:子名稱//子協議:驅動程序名稱或是資料庫的連接訪問機制;子名稱:描述要訪問的資料庫的地址信息,是通過網路訪問,必須將網擴地址作為子名稱的一部分
C、
建立連接(驅動程序管理器)
連接步驟:
1、Class.forName(「驅動程序的主入口程序名」);
2、定義URL:
jdbc:oracle:thin:@IP地址:埠:服務名
3、DriverManager類:管理驅動程序並且使得驅動程序與應用程序建立連接
4、Connection類:保存了應用程序與資料庫建立的連接,應用程序與資料庫進行的所有操作都是在該連接對象上進行
『肆』 jdbc鏈接資料庫的具體步驟是怎樣的
JDBC連接資料庫
•創建一個以JDBC連接資料庫的程序,包含7個步驟:
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開始
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
『伍』 jdbc連接資料庫的幾個步驟
創建一個以JDBC連接資料庫的程序,包含7個步驟:
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() ;
}
}
『陸』 通過JDBC訪問資料庫
首先需要導入相應資料庫的驅動文件,然後要注冊驅動,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是你資料庫名稱
『柒』 JDBC訪問資料庫的步驟
載入(注冊)資料庫驅動(到JVM)。建立(獲取)資料庫連接。創建(獲取)資料庫操作對象。定義操作的SQL語句。執行資料庫操作。獲取並操作結果集。
在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關系資料庫等各個階段的發展,資料庫技術在各個方面的快速的發展。特別是關系型資料庫已經成為目前資料庫產品中最重要的一員。
80年代以來, 幾乎所有的資料庫廠商新出的資料庫產品都支持關系型資料庫,即使一些非關系資料庫產品也幾乎都有支持關系資料庫的介面。這主要是傳統的關系型資料庫可以比較好的解決管理和存儲關系型數據的問題。
資料庫管理系統是為管理資料庫而設計的電腦軟體系統,一般具有存儲、截取、安全保障、備份等基礎功能。資料庫管理系統可以依據它所支持的資料庫模型來作分類,例如關系式、XML;或依據所支持的計算機類型來作分類,例如伺服器群集、行動電話。
或依據所用查詢語言來作分類,例如SQL、XQuery;或依據性能沖量重點來作分類,例如最大規模、最高運行速度;亦或其他的分類方式。不論使用哪種分類方式,一些DBMS能夠跨類別,例如,同時支持多種查詢語言。
『捌』 java怎樣通過jdbc來訪問oracle資料庫的存儲過程和存儲函數
//存儲過程create
or
replace
Procere
countBySal(
p_sal
emp.sal%type,
p_count
OUT
number
)as
begin
select
count(*)
into
p_count
from
emp
where
sal
>=
p_sql;
end
countBySal;
//調用步奏import
java.sql.CallableStatement;
//帶哦用存儲過程所必須的語句借口
import
java.sql.Connection;
import
java.sql.DriverManager;
import
java.sql.Types;public
class
EmpUtil
{
public
static
int
countBySal(double
sal)
throws
Exception{
Class.forName("oracle.jdbc.driver.OracleDriver");
String
url="jdbc:oracle:thin:@localhost:1521:test";
Connection
cn=DriverManager.getConnection(url,
"scott",
"tiger");
String
sql="{call
countBySal(?,?)}";//調用存儲過程的語句,call後面的就是存儲過程名和需要傳入的參數
CallableStatement
cst=cn.prepareCall(sql);
cst.setDouble(1,
sal);//設置in參數的值
cst.registerOutParameter(2,
Types.INTEGER);//注冊out參數的類型
cst.execute();
int
result
=
cst.getInt(2);
cst.close();
cn.close();
return
result;
}
public
static
void
main(String[]
args)
{
int
count;
try
{
count
=
EmpUtil.countBySal(3000);
System.out.println("工資在3000元以上的人數為:"+count);
}
catch
(Exception
e)
{
e.printStackTrace();
}
}
『玖』 jdbc訪問資料庫有哪幾種方法
連接資料庫有很多種 JDBC就是一種方法啊 不過JDBC注冊驅動有三種方法//注冊驅動 方法一riverManager.registerDriver(new com.mysql.jdbc.Driver());//注冊驅動 方法二System.setProperty("jdbc.Driver","com.mysql.jdbc.Driver");//注冊驅動 方法三 通過一個類的名字把類裝載到java的虛擬機中Class.forName("com.mysql.jdbc.Driver");
『拾』 怎樣使用jdbc訪問mysql資料庫
JDBC連接MYSQL資料庫:
package cn.outofmemory.test;
import java.sql.Connection;
import java.sql.DriverManager;
public class Mysql {
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
System.out.print("yes");
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
Class.forName("com.mysql.jdbc.Driver").newInstance(); 我們鏈接的是MYSQL資料庫,所以需要一個MYSQL的資料庫驅動,如果你的環境中沒有安裝,
可以下載:mysql-connector-java-5.1.17-bin.jar JAR包,然後放進jdk1.6.0_37\jre\lib\ext 重啟eclispe 就可以在JRE系統庫中看到。
con = DriverManager.getConnection;("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); 是鏈接資料庫的語句,
返回Connection con;對象。參數格式:("jdbc:mysql://ip:埠/資料庫名稱", 用戶名,密碼)
寫入一條數據
package main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Mysql {
/**
* 入口函數
* @param arg
*/
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
Statement stmt; //創建聲明
stmt = con.createStatement();
//新增一條數據
stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('init', '123456')");
ResultSet res = stmt.executeQuery("select LAST_INSERT_ID()");
int ret_id;
if (res.next()) {
ret_id = res.getInt(1);
System.out.print(ret_id);
}
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
stmt.executeUpdate INSERT; DELETE; UPDATE;語句都用executeUpdate函數來操作
stmt.executeQuery SELECT;語句都用stmt.executeQuery函數來操作
ResultSet res = stmt.executeQuery;("select LAST;_INSERT_ID()");
查詢最後插入數據的ID號,返回ResultSet res;對象
刪除和更新數據
package main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Mysql {
/**
* 入口函數
* @param arg
*/
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
Statement stmt; //創建聲明
stmt = con.createStatement();
//新增一條數據
stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('init', '123456')");
ResultSet res = stmt.executeQuery("select LAST_INSERT_ID()");
int ret_id;
if (res.next()) {
ret_id = res.getInt(1);
System.out.print(ret_id);
}
//刪除一條數據
String sql = "DELETE FROM user WHERE id = 1";
long deleteRes = stmt.executeUpdate(sql); //如果為0則沒有進行刪除操作,如果大於0,則記錄刪除的條數
System.out.print("DELETE:" + deleteRes);
//更新一條數據
String updateSql = "UPDATE user SET username = 'xxxx' WHERE id = 2";
long updateRes = stmt.executeUpdate(updateSql);
System.out.print("UPDATE:" + updateRes);
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
刪除和更新數據都使用stmt.executeUpdate函數。
刪除和更新數據都會返回一個Long的結果,如果為0,則刪除或者更新失敗,如果大於0則是操作刪除的記錄數
查詢語句
package main;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
public class Mysql {
/**
* 入口函數
* @param arg
*/
public static void main(String arg[]) {
try {
Connection con = null; //定義一個MYSQL鏈接對象
Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驅動
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root"); //鏈接本地MYSQL
Statement stmt; //創建聲明
stmt = con.createStatement();
//新增一條數據
stmt.executeUpdate("INSERT INTO user (username, password) VALUES ('init', '123456')");
ResultSet res = stmt.executeQuery("select LAST_INSERT_ID()");
int ret_id;
if (res.next()) {
ret_id = res.getInt(1);
System.out.print(ret_id);
}
//刪除一條數據
String sql = "DELETE FROM user WHERE id = 1";
long deleteRes = stmt.executeUpdate(sql); //如果為0則沒有進行刪除操作,如果大於0,則記錄刪除的條數
System.out.print("DELETE:" + deleteRes);
//更新一條數據
String updateSql = "UPDATE user SET username = 'xxxx' WHERE id = 2";
long updateRes = stmt.executeUpdate(updateSql);
System.out.print("UPDATE:" + updateRes);
//查詢數據並輸出
String selectSql = "SELECT * FROM user";
ResultSet selectRes = stmt.executeQuery(selectSql);
while (selectRes.next()) { //循環輸出結果集
String username = selectRes.getString("username");
String password = selectRes.getString("password");
System.out.print("\r\n\r\n");
System.out.print("username:" + username + "password:" + password);
}
} catch (Exception e) {
System.out.print("MYSQL ERROR:" + e.getMessage());
}
}
}
查詢語句使用stmt.executeQuery函數
rs.absolute() //絕對位置,負數表示從後面數
rs.first()第一條
rs.last()最後一條
rs.previoust()前一條
rs.next()後一條
rs.beforeFirst()第一條之前
rs.afterLast()最後之後
rs.isFirst(),rs.isLast(),rs.isBeforeFirst(),rs.isAfterLast