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

java並行sql

發布時間: 2023-02-15 15:06:14

1. java 怎麼連接sql資料庫 幫忙步驟講解以及代碼參考

首先,使用JDBC技術獲取資料庫連接:
public static Connection getConnection(){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "root", "root");
return con;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
Class.forName(資料庫驅動);
這是JVM在載入資料庫驅動。
DriverManager.getConnection(url,username,password);
url是指連接資料庫的地址。
像上面我寫的URL是這樣的:jdbc:oracle:thin:@127.0.0.1:1521:orcl
127.0.0.1是指本機,也可以用localhost代替,1521是資料庫埠號(本人用的是oracle10g),orcl是指oracle_sid。username/password資料庫的用戶名和密碼。有的資料庫的url可能不是這樣。當然可以去網上查一下就知道了。

這種連接方法是一次請求一次連接,是比較浪費資源的。
像tomcat,weblogic等伺服器都帶有連接池來避免資源的浪費,而且現在好象有規定,只要是伺服器就必須帶有連接池。
至於連接池的連接方法,不同的伺服器有不同的獲得方法。建議你用哪個就去學哪個。

有連接就有關閉資料庫,獲得資料庫連接後一定要記得關閉資源。
public static void close(Connection con){
if(con!=null){
try{con.close();}catch(Exception e){}
}
}
為了方便,不防寫成一個方法。

獲取連接後,然後使用這個連接去創建相應的Statement來操作資料庫。
有Statement,PerparedStatement,CallableStatement這幾種statement可以用來創建。
我們先看看Statement的使用。
public static void main(String[] args) {
Connection con=JDBCUtil.getConnection();
Statement stat=null;
ResultSet rs=null;
try{
String sql="select a_id,a_name,a_no from a";
stat=con.createStatement();
rs=stat.executeQuery(sql);
while(rs.next()){
System.err.println(rs.getInt(1)+"/"+rs.getString(2)+"/"+rs.getInt(3));
}
}catch(Exception e){
e.printStackTrace();
}
JDBCUtil.close(rs,stat,con);
}
注釋:
stat=con.createStatement();是用連接創建Statement對象。
stat.executeQuery(sql);是執行查詢語句。這個方法返回的是一個結果集。即ResultSet。可以將查詢出來的結果放入結果集中。
rs.next()這個方法返回的一個boolean類型的值,即當指針能夠往下走時,返回true,否則返回false。這樣就可以保證能夠遍歷這個結果集了。

當然這里出現了Statement,ResultSet,那麼close()方法也得變化了。
如下:
public static void close(ResultSet rs,Statement stat,Connection con){
if(rs!=null){
try{rs.close();}catch(Exception e){}
}
if(stat!=null){
try{stat.close();}catch(Exception e){}
}
if(con!=null){
try{con.close();}catch(Exception e){}
}
}
注意關閉順序,一定是先ResultSet,後Statement,最後Connection.
由於PerparedStatement和CallableStatement都是Statement的實現類,根據JAVA多態的用法,close()方法就算完全寫完了,不用改了。

現在來看看結果:
2/all/2
1/hello/1

===================================================================
現在我們用PerparedStatement來查詢:
Connection con=JDBCUtil.getConnection();
PreparedStatement stat=null;
ResultSet rs=null;
try{
String sql="select a_id,a_name,a_no from a where a_id=?";
stat=con.prepareStatement(sql);
stat.setInt(1, 1);
rs=stat.executeQuery();
while(rs.next()){
System.err.println(rs.getInt(1)+"/"+rs.getString(2)+"/"+rs.getInt(3));
}
}catch(Exception e){
e.printStackTrace();
}
JDBCUtil.close(rs,stat,con);
這里的sql語句里有一個值是未確定的。這樣就可以實現預編譯,大大提高了程序的運行效率。流程如下:
stat=con.prepareStatement(sql);這個方法就將這個sql語句進行了一次編譯,查看有沒有什麼明顯的語法錯誤等。
如果沒錯,再通過stat.setInt(1, 1);將缺失的值補回去然後再執行sql查詢。
PreparedStatement為批處理提供了一系統方法,讓批查詢、批更新等更加的效率。

讓我們看看結果:
1/hello/1
==============================================================
CallableStatement是專門用於處理存儲過程的。
如果想深入的學習,建議你去查看相關資料。

2. 求救!!怎樣在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包里都有,自己多看看。

3. java與sql怎麼實現對接

設置 Classpath JDBC 驅動程序並未包含在 Java SDK 中。因此,如果要使用該驅動程序,必須將 classpath 設置為包含 sqljdbc.jar 文件。如果 classpath 缺少 sqljdbc.jar 項,應用程序將引發「找不到類」的常見異常。 sqljdbc.jar 文件的安裝位置如下: <安裝目錄>\sqljdbc_<版本>\<語言>\sqljdbc.jar 下面是用於 Windows 應用程序的 CLASSPATH 語句實例: CLASSPATH =.;%ProgramFiles%\sqljdbc_1.2\chs\sqljdbc.jar 設置SQL Server伺服器 我使用的是SQL Server 2005標准版SP2,這些都默認即可,一般不用配置。如果需要配置埠請看下面。 1、「開始」→「程序」→「Microsoft SQL Server 2005」→「配置工具」→「SQL Server 配置管理器」→「SQL Server 2005 網路配置」→「MSSQLSERVER 的協議」 2、如果「TCP/IP」沒有啟用,右鍵單擊選擇「啟動」。 3、雙擊「TCP/IP」進入屬性設置,在「IP 地址」里,可以配置「IPAll」中的「TCP 埠」,默認為1433。 4、重新啟動SQL Server或者重啟計算機。 建議重啟電腦。 在Eclipse中測試 1、打開Eclipse,「文件」→「新建」→「項目」→「Java 項目」,項目名為Test 2、在Eclipse中,選擇「窗口」→「首選項...」→「Java」→「已安裝的 JRE」,選擇已安裝的 JRE,點擊「編輯」→「添加外部」,選擇%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar 3、在Test項目的「JRE 系統庫」中可以看見sqljdbc.jar,如果沒有可以右鍵單擊項目Test→「構建路徑」→「配置構建路徑...」→「Java 構建路徑」→「庫」→「添加外部 JAR...」,選擇%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar 4、編寫Java代碼,如下: import java.sql.*; public class Test { public static void main(String[] srg) { String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //載入JDBC驅動 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=test"; //連接伺服器和資料庫test String userName = "sa"; //默認用戶名 String userPwd = "123456"; //安裝sql server 2005時的密碼 Connection dbConn; try { Class.forName(driverName); dbConn = DriverManager.getConnection(dbURL, userName, userPwd); System.out.println("Connection Successful!"); //如果連接成功 控制台輸出Connection Successful! } catch (Exception e) { e.printStackTrace(); } } } 來源:考試大-計算機等級考試

4. java在jsp頁面如何直接執行sql

兩個簡單的jsp頁面,資料庫連接(我給你的是mysql資料庫連接示例,後面附sqlserver資料庫連接部分關鍵代碼)
首先是 獲取值頁面My.jsp 源碼:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'My.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="Hp.jsp">
name:<input name="name" value="" type="text"></br>
password:<input name="password" value="" type="text"></br>
<input type="submit" value="button">
</form>
</body>
</html>
處理頁面 Hp.jsp 源碼:
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'Hp.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<%
Connection con = null;
Statement stm = null;

String url = "jdbc:mysql://localhost:3306/數據名稱";//資料庫名稱就是你的資料庫名字
String driver = "com.mysql.jdbc.Driver"; //驅動類位置
String username = "root"; //資料庫登錄名稱,此處寫上你的用戶名稱
String pwd = "root"; //資料庫登錄密碼,此處寫上你的登錄密碼
try
{
Class.forName(driver);
con = DriverManager.getConnection(url, username, pwd); //創建Connection連接對象
stm = con.createStatement(); //創建Statement 命令執行對象
}
catch (ClassNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

String name=request.getParameter("name"); //獲取傳過來的名稱
String password=request.getParameter("password");//獲取傳過來的密碼

String sql="insert into user(name,password) values("+name+","+password+")";//資料庫添加一條記錄sql語句

int temp=stm.executeUpdate(sql);

if(temp>0)
{
out.print("添加成功");
}
else
{
out.print("添加失敗");
}
//關閉資料庫連接
stm.close();
con.close();

%>
</body>
</html>
注意 連接不同資料庫要導入不同的資料庫驅動包 你要導入才行啊
附 sqlserver資料庫連接 部分關鍵代碼:
private static Connection con = null;
private static Statement stm = null;

private static String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=資料庫名稱";
private static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";//與mysql有所不同
private static String username = "sa";//默認用戶
private static String pwd = "123"; //密碼

static {
try {
Class.forName(driver);

con = DriverManager.getConnection(url, username, pwd);
System.out.print("連接成功!");
stm = con.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

5. 為什麼SQL處理數據比Java快

sql是一個專門處理數據的腳本,速度肯定比 java快啊!