㈠ java實現sql連接和查詢的代碼
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBCon {
//資料庫驅動對象
public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
//資料庫連接地址(資料庫名)
public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl";
//登陸名
public static final String USER="FM";
//登陸密碼
public static final String PWD="FM";
//創建資料庫連接對象
private Connection con=null;
//創建資料庫預編譯對象
private PreparedStatement ps=null;
//創建結果集
private ResultSet rs=null;
//創建數據源對象
public static DataSource source=null;
// //靜態代碼塊
// static{
//
// //初始化配置文件context
// try {
// Context context=new InitialContext();
// source=(DataSource)context.lookup("java:comp/env/jdbc/webmessage");
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
//
// }
/**
* 獲取資料庫連接
*/
public Connection getCon(){
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
con=DriverManager.getConnection(URL,USER,PWD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
// /**
// * 獲取資料庫連接
// */
// public Connection getCon(){
//
// try {
// con=source.getConnection();
// } catch (SQLException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// return con;
// }
/**
* 關閉所有資源
*/
public void closeAll(){
if(rs!=null)
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(ps!=null)
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(con!=null)
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param sql資料庫更新(增、刪、改) 語句
* @param pras參數列表(可傳,可不傳,不傳為NULL,以數組形式存在)
* @return 返回受影響都行數
*/
public int update(String sql,String... pras){
int resu=0;
con=getCon();
try {
ps=con.prepareStatement(sql);
for(int i=0;i<pras.length;i++){
ps.setString(i+1,pras[i]);
}
resu=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
closeAll();
}
return resu;
}
/**
* @param sql資料庫查詢語句
* @param pras參數列表(可傳,可不傳,不傳為NULL,以數組形式存在)
* @return 返回結果集
*/
public ResultSet query(String sql,String... pras){
con=getCon();
try {
ps=con.prepareStatement(sql);
if(pras!=null)
for(int i=0;i<pras.length;i++){
ps.setString(i+1, pras[i]);
}
rs=ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
}
㈡ 用Java做一個簡單的界面,連接到資料庫(SQL Server),大家有沒有具體的例子,跪求解答
你可以做一個下拉框,選項有教師和學生,不過這個的話,一般是通過許可權來控制的,這樣教師和學生登錄之後,看到的菜單就不一樣了。
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() ;
}
}
㈢ java如何實現sql連接和查詢的代碼
import java.sql.Connection。
㈣ Java sql實現聯合查詢的語句
-----select語句的綜合使用
select * from 系部表 ------ 『*』代表所有內容,也就是查看『系部表』的所有內容。
------輸出部分列
select 欄位,欄位 from
select 系部代號,系主任 from 系部表 ------查看『系部表』中『系部代號』和『系主任』兩個欄位。
------限制返回行數
select top 3* from
select top 2* from 系部表 ------查看『系部表』中前二行的記錄。
------定義欄位名
select as from
select '明星' as 備注,* from 系部表
------加一欄位,內容為『明星』,欄位名為『備注』,查看所有欄位。
-------描述例
select '描述',欄位 from
select *,總價錢=價錢*數量 from 商品表
------查看所有欄位並加一欄位,欄位名為總價錢,值為『價錢*數量』。
----衍生列
select id,姓名=姓+名 from 身份證
select *,總價錢=價錢*數量 from 商品表
------是否顯重復記錄 只能用於一個欄位
select distinct from
select distinct*from 系部表
------不顯示重復行,如果有兩行或多行在每個欄位的值都一樣,則只顯示一行來代替這些行。
-----條件查詢
select from where
select * from 系部表 where 住址 not in ('沈陽')
------顯示所有欄位,條件是『住址』欄位的值非『沈陽』的。把 not 去掉就是查看『住址』是沈陽的了。
----多個條件
select from where and
select * from 學生 where 年齡<25 and 年齡>20 and 住址 in ('沈陽') and 性別='女'
------多條件查看,年齡在23到30之間,住址在『沈陽』,並且性別為『女』。『好友』是表名
-----空值查詢
欄位 is null
select * from 學生 where 學費 is null
------查看所有欄位,學費欄位為『null』的行。就是沒交學費的學生。
------對查詢結果進行排序
order by 欄位 asc升序(desc降序)
select *from 學生 order by 學號 desc ---(desc是降序,asc是升序,升序可以省略)
------查看所有欄位,以『學號』欄位降序排序。
--********************************************************************************
------對數據進行統計
--記錄的個數 count
--值的總和 sum
--平均值 avg
--最大值 max
--最小值 min
--count的用法
select count(*) from 學生
select count(系部代號) from 系部表
-------顯示該列非空值的行數。如果是(*),就顯示行數,不管空不空。如果寫成count(系部代號+系主任),那麼顯示的是兩列都不為空的行數。
--sum的用法
select sum(學費) from 學生
select sum(價錢*數量) 總價錢 from 商品表
------顯示『價錢』欄位的值乘以『數量』欄位的值,所有行的累加和。就是所以商品的總價錢。其中『總價錢』是列名。
--avg的用法
select avg(年齡) from 學生
select avg(價錢) as 平均價 from 商品表
------顯示所有價錢的平均值。as可以省略。
--max的用法
select max(價錢) as 最高價 from 商品表
------顯示最高價是多少。
--****************************************************************
select * from 商品表 where 價錢 in(select max(價錢) from 商品表)
------括弧語句裡面返回的是『最高價』,條件是顯示『價錢』是最高價的行。
--****************************************************************
--min的用法
select min(年齡) from 學生
select min(價錢) as 最高價 from 商品表
------顯示最低價是多少。
------分組
select from group by 列名
select 商品,sum(價錢) as 總價錢 from 商品表 group by 商品
------顯示『商品』和『總價錢』欄位。
------『總價錢』欄位的值是所有同名『商品』值的和。(因為我們用了"sum(價錢)")sum不能對varchar進行運算
------group by 是用來分組的,也就是用『商品』欄位分組。不顯示重復的商品欄位的行。
-----compute 匯總統計
select from compute
select from order by compute 函數 by
select * from 商品表 compute sum(價錢)
------顯示兩個表,把所有行和所有列都顯示出來,第二個表是一個匯總表,只有一列一行,就是價錢的總合,列名為sum.
select 商品,價錢,數量 from 商品表 order by 商品 desc compute sum(價錢) by 商品
------顯示表的數量為"商品"的種類乘2,一種商品一個表,還有一個sum表會對這個商品的價錢求合。
-------having 條件語句
select from group by having 條件
select 商品,sum(價錢*數量) as 總價錢 from 商品表 group by 商品 having sum(價錢*數量)>20000
-----以商品分組,也就只可以查看商品欄位,還有一個聚合函數欄位。having是條件,是對後面的聚合函數的值的條件。
--*****************************************************************************************
create table aa(a1 int,a2 int)
create table bb(b1 int,b2 int)
insert bb values(2,2)
insert bb values(3,1)
insert bb values(7,23)
insert bb values(5,33)
insert bb values(9,53)
------子查詢
----- 單列單值
where 欄位 條件(必須為單值)
select * from table_a where column_a1 < (select avg(column_b1) from table_b) and column_a1 > 100
------顯示『a1』列中的值在『b』表中的『b1』列中也有的行。
----- 單列多值
where 欄位 in
select * from table_a where column_a1 in(select column_b1 from table_b)
where 欄位<all()
select * from table_a where column_a1 < all(select column_b1 from table_b)
------顯示『a1'列中的值小於『b'表中的『b1'列中全部的值的行。
------只有小於b1列中最小值的才會被顯示
where 欄位<any()
select * from table_a where column_a1 <any(select column_b1 from table_b)
------顯示『a1'列中的值小於『b'表中的『b1'列中任何一行的值的行。
------只要小於b1列中最大值的就會被顯示
-----多列多值
where exists(只查詢)
select * from table_a where exists(select * from table_b where column_b1=101)
------exists它返回一個boolean值。真或假。條件為真則輸出where前面的語句。假則反之。
------這個函數多用與if語句處。exists後面括弧中的條件是如果b1列中有445這個值,就輸出a表。
if exists(select * from sysobjects where name='table_b')
select * from table_a
------sysobjects包含當前資料庫中所有的表。
------也就是說當前資料庫中如果有table_b這個表,就為真。
if exists(select * from sysobjects where name='abc')
drop table abc
create table abc(a varchar(10),b varchar(20))
-------模糊查詢
select from where like'條件'
條件 'a_'
'_a'
select * from table_a where column_a1 like '4__'
------查看a1列中三位數,並且是以4開頭的行。
select * from table_a where column_a1 like '__4'
------查看a1列中三位數,並且是以4結尾的行。
select * from table_a where column_a1 like '_4_'
------查看a1列中三位數,並且是以4為中間的行。
'a%'
'%a'
'%a%'
select * from table_a where column_a1 like '4%'
-----查看a1列中以4開頭的行。
select * from table_a where column_a1 like '%4'
-----查看a1列中以4結尾的行。
select * from table_a where column_a1 like '%4%'
-----查看a1列中有4的行。不管4在什麼位置。
'a[a-z]'
'[a-z]a'
select * from abc where a like'a_'
select * from abc where a like'a[0-9]'
select * from table_a where column_4 like '_b_[0-9]'
-----查看第4列中第二個字元是b,第四個字元是0到9的行。
------將查詢結果生成新表select.....into
select * into 王 from 學生 where 姓名 like'王__'
select * from 王
select * into 美女 from 學生 where 性別 = '女' and 年齡 like '2_'
-----查看學生表中的性別欄位為女年齡十位上是2的行,再把查到的結果生成一個表,表名是into後的美女
-----它是生成一個新表的,和別的查看不一樣。
select * from 美女
--停!!!
--停!!!
--停!!!
--停!!!
------合並結果集 select ...union select....
select * from table_a
select * from table_b
select * from table_a union select * from table_b
select * from table_b union select * from table_a
------查看table_a表和table_b表,兩個表的連接。只是查看,並沒有真正連接。要求這兩個表的列數和列的數據類型完全一致。
-----------------連接查詢
------內連接
--select 列名列表 from 表1 inner join 表2 on 條件
--table_a的行數乘以table_b 的行數。
select * from table_a inner join table_b on table_a.column_a1=table_b.column_b1
------內聯接。顯示出『a』表的『a1』欄位和『b』字的『b1』欄位相同的行。
--select 列名列表 from 表1,表2 where 條件
select *from table_a,table_b where table_a.column_a1=table_b.column_b1
------這是內聯接的簡寫版。
------外聯接
----左外聯接
(1)select 列名列表 from 表1 left join 表2 on 條件
--以左為主,右表有則顯示,無則以null補位
select * from table_a left join table_b on table_a.column_a1=table_b.column_b1
------左聯接。把『a』表中的所有行都顯示出來,『b』表中的『b1』欄位和『a』表中的『a1』欄位
------相等的顯示,但『a』表中沒有的,『b』表沒有的則顯示NULL。
(1)select 列名列表 from 表1,表2 where 條件
select * from table_a,table_b where table_a.column_a1*=table_b.column_b1
------左聯接的簡寫版。"*="是左聯接的意思
----右外聯接
(1)select 列名列表 from 表1 right join 表2 on 條件
select * from table_a right join table_b on table_a.column_a1=table_b.column_b1
------以右面表為准,和左聯接一樣。
(1)select 列名列表 from 表1,表2 where 條件
select * from table_a,table_b where table_a.column_a1=*table_b.column_b1
------右聯接的簡寫版。
----全外聯接
select 列名列表 from 表1 full join 表2 on 條件
select * from table_a full join table_b on table_a.column_a1 = table_b.column_b1
------外聯接的全聯接,兩個表的記錄都會顯示,不滿足條件的以null補位.
------a表15行記錄,b表5行記錄,滿足條件的只有1行記錄,查詢結果有19行。
------------cross join
select 列名列表 from 表1 cross join 表2
select * from aa cross join bb
select * from 學生
create table 成績(xid int,語文 int,數學 int,英語 int,化學 int)
insert 成績 values(1,87,89,78,98)
insert 成績 values(2,17,8,78,98)
insert 成績 values(3,27,99,78,98)
insert 成績 values(4,47,49,78,98)
insert 成績 values(5,79,69,78,98)
insert 成績 values(6,77,99,78,98)
insert 成績 values(7,77,29,78,98)
select * from 成績 cross join 學生
------成績表的第一行記錄對應一次學生表的第一行記錄,總行數為兩個錶行數的乘積
------*************************************************
select b.姓名,a.* from 成績 a,學生 b where a.xid *= b.xid
------左連接,"b.姓名"代表學生表的"姓名"欄位
------哪個是左表哪個是右表由"a.xid *= b.xid"來定,"b.姓名,a.*"是代表顯示的位置
------左連接的特性是顯示左邊表的所有行(成績表的所有欄位的所有行),右邊表只顯示滿足條件的行
------*************************************************
-----------自身連接
select 員工主管.員工編號,員工主管.員工姓名,主管表.員工姓名
from 員工主管 left join 員工主管 as 主管表
on 員工主管.主管編號=主管表.員工編號
select * from 學生 a,學生 b where a.xid=b.xid
-------自聯接,但要給自己起個別名。
㈤ java連接SQL資料庫
import java.sql.ResultSet; //都是導入一些下面需要用到的類
String ConnStr="jdbc:microsoft:sqlserver://WINJUE:1433;DatabaseName=library";//jdbc連接資料庫url
public sqlServer() {
try {
Class.forName(DBDriver).newInstance(); //載入SQLServer驅動程序,DBDriver是你上面的代碼;
conn=DriverManager.getConnection(ConnStr,"sa","sa"); //和資料庫建立連接,ConnStr裡面的://WINJUE:1433;DatabaseName=library 分別是主機地址:埠號;你自己建的資料庫(database)
}
catch(SQLException e) { //捕獲SQL異常
System.out.println(e.getMessage()); //要是出現異常,捕獲到後,這句代碼會把異常的信息(出錯的原因之類的)列印出來。
}
catch(Exception e) { //捕獲異常,這個是總的,所以不能和上面的順序顛倒,先小到大,我連ORACLE和MYSQL,這個我通常不要,只須捕獲SQL異常就OL
System.out.println(e.getMessage());
}
}
public Connection getConn(){ //獲取連接方法
return conn;
}
public void insert(String sql) {//增刪改
try {
Statement stm=conn.createStatement(); 調用conn下的方法,創建Statement對象
stm.executeUpdate(sql);//調用Statement下的方法執行SQL語句
System.out.println("操作成功");
}
catch(Exception e){
System.out.println(e.getMessage()); //如上
}
}
public ResultSet query(String sql){ //查詢
try{
Statement stm=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=stm.executeQuery(sql); //如上
}
catch(Exception e){
System.out.println(e.getMessage());
}
return rs;
}
public static void main(String args[]){
sqlServer conn=new sqlServer(); //創建sqlServer,就是你上面的類,以便調用裡面的方法
ResultSet rs=conn.query("select * from Orders"); //調用query方法,執行SQL語句後,把結果保存到結果集里
//conn.insert("delete from BookInfo where BookName =" +"\'悟空傳\'");
//conn.insert("insert into BookInfo (BookID,BookName,Author,KeyWord) values (14445678,'悟空傳','今何在','孫悟空')");
try{
while(rs.next()){ //循環,判斷結果集里的記錄,一條條往下走,是否還有下一條記錄,若是返回真,繼續走
System.out.print(rs.getString("OrderID"));
//System.out.print(rs.getString("U_age"));
}
rs.close() ; //關閉結果集
}
catch (Exception e){
System.out.println(e.getMessage());
}
}
}
注:
TYPE_FORWARD_ONLY:預設類型。只允許向前訪問一次,並且不會受到其他用戶對該資料庫所作更改的影響。
TYPE_SCROLL_INSENSITIVE:允許在列表中向前或向後移動,甚至能進行特定定位,例如移至列表中的第四個記錄或從當前位置向後移動兩個記錄。不會受到其他用戶對該資料庫所作更改的影響。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 相同,允許在記錄中定位。這種類型受到其他用戶所作更改的影響。如果用戶在執行完查詢之後刪除一個記錄,那個記錄將從 ResultSet 中消失。類似的,對數據值的更改也將反映在 ResultSet 中。
㈥ java連接sql資料庫。實現增刪改查怎麼寫。誰有實例
java連接資料庫,你可以用一些框架,比如hibernate,iBATIS等,這樣方便一點,否則你就用JDBC吧,自己寫sql語句:
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() ;
}
}
㈦ 用java實現類似sql中關系圖的方法!只需告知思想!
對應資料庫中的表建立相應的實體類,實體類中的屬性對應資料庫表中的欄位,帶引用關系的欄位在實體類中類型聲明為主表對應的實體類型,並在相應的里寫一個參數為引用ID返回類型為該對象的方法,這樣就可以通過外鍵欄位獲得該引用類型的對象了,通過對象即可點出該對象的任何屬性.如有兩表:學生表:studentInfostuId int primary key identity,stuName varchar(10),stuSex bit,...成績表:scoreInfoscoId int primary key identity,stuId int foreign key references studentInfo(stuId), --外鍵引用學生IDscore int...實體類如下:public class StudentInfo{ private int stuId;public int getStuId() {
return id;
}
public void setStuId(int id) {
this.id = id;
}省略其他屬性...}關鍵在於下面屬性的封裝public class ScoreInfo{ private StudentInfo stuId;public StudentInfo getStuId() {
return stuId;
}
public void setStuId(Student stuId) {
this.id = stuId;
}省略其他屬性...}這樣只需要在StudentInfoDao類里寫個getStudentInfoById(int stuId)方法就可以了從資料庫查出成績表中的外鍵stuId後,調用getStudentInfoById(int stuId)方法獲得StudentInfo類型的對象,將對象封裝在ScoreInfo類的對象中例如我們要取學生的姓名,直接通過ScoreInfo的對象就可以調出來假設已經封裝好了一個ScoreInfo類的對象名為scorescore.getStuId().getStuName()即可得到
㈧ java怎麼和資料庫連接
1、載入驅動程序。
處理結果兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些 行中數據的訪問。
(8)java實現類似sql左連接擴展閱讀:
Statement
要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
㈨ 用JAVA實現SQL資料庫。具體一步一步該做什麼
然後就是看你要用什麼方式顯示了,是做小軟體還是直接用網頁.
資料庫的連接方式 JDBC 純驅動 連接池 看你用那種了
選好以後,在網上下一段鏈接資料庫的代碼.
修改.
連接
查詢/讀取
顯示到你設計的軟體或是網頁中
我有些資料 要的話留信箱發給你~