当前位置:首页 » 编程语言 » 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快啊!