當前位置:首頁 » 編程語言 » jdbc執行多個sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

jdbc執行多個sql

發布時間: 2022-08-31 15:49:01

① jdbc實現sql語句

用這個類吧.好的話,給我加加分.
import java.sql.*;
/**
* @功能: 一個JDBC的本地化API連接類,封裝了數據操作方法,只用傳一個SQL語句即可
* @作者: 李開歡
* @日期: 2007/
*/
public class ConnectionDemo {
/*
* 這里可以將常量全部放入另一個類中,以方便修改
*/
private static Connection conn;
private static Statement ps;
private static ResultSet rs;
private static final String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static final String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
private static final String USER ="sa";
private static final String PASS = "sa";
public ConnectionDemo() {
// TODO Auto-generated constructor stub
ConnectionDemo.getConnection();
}
public static Connection getConnection(){
System.out.println("連接中...");
try {
Class.forName(ConnectionDemo.DRIVER);
conn = DriverManager.getConnection(ConnectionDemo.URL, ConnectionDemo.USER, ConnectionDemo.PASS);
System.out.println("成功連接");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static Statement getStatement(String sql){
System.out.println("執行SQL語句中...");
try {
ps = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
if(sql.substring(0, 6).equals("select")){
rs = ps.executeQuery(sql);
System.out.println("執行完查詢操作,結果已返回ResultSet集合");
}else if(sql.substring(0, 6).equals("delete")){
ps.executeUpdate(sql);
System.out.println("已執行完畢刪除操作");
}else if(sql.substring(0, 6).equals("insert")){
ps.executeUpdate(sql);
System.out.println("已執行完畢增加操作");
}else{
ps.executeUpdate(sql);
System.out.println("已執行完畢更新操作");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ps;
}
public static ResultSet getResultSet(){
System.out.println("查詢結果為:");
return rs;
}
public static void closeConnection(){
System.out.println("關閉連接中...");
try {
if (rs != null) {
rs.close();
System.out.println("已關閉ResultSet");
}
if (ps != null) {
ps.close();
System.out.println("已關閉Statement");
}
if (conn != null) {
conn.close();
System.out.println("已關閉Connection");
}
} catch (Exception e) {
// TODO: handle exception
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ConnectionDemo.getConnection();
String sql = "delete from type where id = 1";
ConnectionDemo.getStatement(sql);
String sql2 = "insert into type values(1,'教學設備')";
ConnectionDemo.getStatement(sql2);
String sql1 = "select * from type";
ConnectionDemo.getStatement(sql1);
ResultSet rs = ConnectionDemo.getResultSet();
System.out.println("編號 "+"類 型");
try {
while(rs.next()){
System.out.print(" "+rs.getInt(1)+" ");
System.out.println(rs.getString(2));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ConnectionDemo.closeConnection();
}
}

② jdbc中同時執行兩條查詢sql語句,獲得結果怎麼寫

step1:構造連接
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db","root","123");

step2:構造語句
String sql = "select username,password from t_user where username=?";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, "zhangshan"); //給SQL的"?"(問號)傳值。

step3:執行查詢
ResultSet rs = stmt.executeQuery(); //rs就是SQL查詢語句返回的結果集

step4:處理結果(java 獲取SQL查詢語句返回的結果)
List list = new ArrayList();
//遍歷結果集,這樣寫就可以了,就是一個循環,有多少條記錄,這里就會循環多少次,
//一次就是一條記錄,想像一下就像一個表的一條記錄
//在這里可以做查詢出來的數據處理,可以封裝成對象之類的(就是把值給它)
if(rs.next()) { //遍歷結果集,這樣寫就可以了
User u = new User();
String username = rs.getString("username");
String address = rs.getString("password ");
u.setUsername(username);
u.setAddress(address);
list.add(u);
}
//上面這個例子意思是,把每一條記錄封裝成了一個User對象,然後這些User對象都放存入到了一個list

step4:關閉連接等

③ java jdbc 執行sql語句批量操作問題

sql優化:
1.name欄位創建索引
2.「table_c.*」 不要用」*「號,可以換成table_c.id,table_c.name,table_c.sex,table_c.email
如果可以的話,你和以在insert into table_a 中間加 append ,這樣寫 insert /*+ append */ into
希望能幫到你!

④ 求救!!怎樣在java的jdbc中連續的執行多條SQL語句急急....

Statement有一個子類,PreparedStatement,專門用來執行多條結構相同的sql語句。
例子:
已得到一個連接引用connection
表hh 有 name varchar2的,id number(4) 型的。
String sql=「insert into hh values(?,?)
PreparedStatement pre=connection.prepareStatement(sql);
pre.setString(1,變數);
pre.setInt(2,變數); -----------〉在其他地方給變數傳值,用命令行、或是寫在一個方法內,用參數傳值。
第一個問號用1,第二用2…………
還可以不用數字,用「name」、「id」

pre.executeUpdate(); (--pre.executeQuery()--也是這樣)

API中java.sql包里都有,自己多看看。

⑤ 難道jdbc不能一次執行兩條sql語句的嗎

可以用addBatch、executeBatch的函數來實現

Statement ps=conn.createStatement();
ps.addBatch("update user set money=money-100 where name='張三'");
ps.addBatch("update user set money=money+100 where name='李四'");
ps.addBatch("update temp set count=count+1 where name='張三'");
ps.executeBatch();

⑥ jdbctemplate 批量執行sql怎麼實現的

//應用場景: 如以下SQL : String sql = "INSERT INTO to_order_return_info VALUES(seq_order_return_info.nextval,?,?,?,?,?,?)"; 該語句為向to_order_return_info表中插入新記錄 但如需要N條數據插入 正常的方案為 執行N次插入數據操作 jdbc ...

⑦ 在java比如說要運行兩個sql.一個方法多個運行sql和一個方法一個sql哪個執行效率更好

一個方法運行一個sql和一個方法運行多個sql這就是換湯不換葯的嘛,雖然是一個方法執行多個sql,和多個方法各執行一個sql效率幾乎是相同的吧。如果說要講究效率的話,就要減少查詢的次數,盡可能多的在一次查詢中查詢到你所關心的數據。多次查詢避免不了的你需要通過IO去訪問資料庫,有了IO的操作那你覺得速度能有多快呢?

只要你遵循一個原則,較少IO操作(你這里體現的就是資料庫查詢),那麼效率就相對會提高的。

有問題你可以追問我,沒問題,望採納,謝謝!

⑧ jdbc怎樣才能執行多條oracle語句啊比如2條delete2條update語句

定義出Connection con後,con.setAutoCommit(false)//設置非自動提交
在代碼的try{
con.setAutoCommit(false);
//寫SQL
// update a set XXXXXXXXXXXXXX;
// UPDATE B SET xxxxxxxxxxxxxxxxxxxxx;
}catch(){
//異常里con.rollback();//資料庫回滾
}finally{
if(con != null){
con.commit();//提交
con.close();//連接關閉
}
}
這樣要麼全部成功,要麼一條都不寫入資料庫

⑨ jdbc請求怎麼寫多條sql

Class.forName("xx.xx")等同於Class.forName("xx.xx",true,CALLClass.class.getClassLoader()),第二個參數(bool)表示裝載類的時候是否初始化該類,即調用類的靜態塊的語句及初始化靜態成員變數。 ClassLoader loader = Thread.currentThread.getContextClassLoader(); //也可以用