‘壹’ 原生jdbc执行sql的过程是什么呢
标准的API,可以构建更高级的工具和接口,使数据库开发人员能够用纯Java API编写数据库应用程序。同时,JDBC也是一个品牌。使用JDBC,可以很容易地向各种关系数据发送SQL语句。换句话说,有了JDBC API,就不需要再编写一个访问Sybase数据库的程序,另一个访问Oracle数据库的程序,或者另一个访问Informix数据库的程序等等。
该连接地址将由数据库制造商提供。通常,当使用JDBC连接到数据库时,用户需要输入数据库连接的用户名和密码。本章使用的是mysql数据库,因此用户名和密码都是“root”,用户只有在获得连接后才能查询或更新数据库。要连接到数据库,您需要从java.sql.DriverManager请求并获取一个Connection对象,该对象表示数据库的连接。
‘贰’ JDBC使用步骤过程
JDBC操作数据库的基本步骤:
1、加载JDBC驱动程序。
在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。成功加载后,会将Driver类的实例注册到DriverManager类中。
2、提供JDBC连接的URL。
连接URL定义了连接数据库时的协议、子协议、数据源标识。
书写形式:协议:子协议:数据源标识。
3、创建数据库的连接。
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象, 该对象就代表一个数据库的连接。
使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和 密码来获得。
4、创建一个Statement,要执行SQL语句,必须获得java.sql.Statement实例。
Statement实例分为以下3 种类型:
(1)执行静态SQL语句。通常通过Statement实例实现。
(2)执行动态SQL语句。通常通过PreparedStatement实例实现。
(3)执行数据库存储过程。通常通过CallableStatement实例实现。
5、执行SQL语句。
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute
6、处理两种情况的结果。
(1)执行更新返回的是本次操作影响到的记录数。
(2)执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些 行中数据的访问。
使用结果集(ResultSet)对象的访问方法获取数据。
7、关闭JDBC对象(关闭结果集-->关闭数据库操作对象-->关闭连接)。
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反:
(1)关闭记录集。
(2)关闭声明。
(3)关闭连接对象。
(2)jdbc用什么方法执行sql扩展阅读:
一、JDBC(Java DataBase Connectivity,java数据库连接)
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。
二、特性
Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
三、用途
简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
‘叁’ 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();
}
}
‘肆’ 在JAVA中,使用JDBC访问数据库时可以执行SQL语句完成对数据库造作的是
B Statement
1、创建 Statement 对象
建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句。Statement 对象用 Connection 的方法 createStatement 创建,如下列代码段中所示:
Connection con = DriverManager.getConnection(url, "sunny", "");
Statement stmt = con.createStatement();
为了执行 Statement 对象,被发送到数据库的 SQL 语句将被作为参数提供给 Statement 的方法:
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");
2、使用 Statement 对象执行语句
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
方法 executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。
方法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能,所以本概述后面将在单独一节中对其进行介绍。
执行语句的所有方法都将关闭所调用的 Statement 对象的当前打开结果集(如果存在)。这意味着在重新执行 Statement 对象之前,需要完成对当前 ResultSet 对象的处理。
应注意,继承了 Statement 接口中所有方法的 PreparedStatement 接口都有自己的 executeQuery、executeUpdate 和 execute 方法。Statement 对象本身不包含 SQL 语句,因而必须给 Statement.execute 方法提供 SQL 语句作为参数。PreparedStatement 对象并不将 SQL 语句作为参数提供给这些方法,因为它们已经包含预编译 SQL 语句。CallableStatement 对象继承这些方法的 PreparedStatement 形式。对于这些方法的 PreparedStatement 或 CallableStatement 版本,使用查询参数将抛出 SQLException。
3、语句完成
当连接处于自动提交模式时,其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时,即认为已完成。对于返回一个结果集的 executeQuery 方法,在检索完 ResultSet 对象的所有行时该语句完成。对于方法 executeUpdate,当它执行时语句即完成。但在少数调用方法 execute 的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。
概述
Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行 SQL 语句的包容器:Statement、PreparedStatement(它从 Statement 继承而来)和 CallableStatement(它从 PreparedStatement 继承而来)。它们都专用于发送特定类型的 SQL 语句: Statement 对象用于执行不带参数的简单 SQL 语句;PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;CallableStatement 对象用于执行对数据库已存储过程的调用。
Statement 接口提供了执行语句和获取结果的基本方法。PreparedStatement 接口添加了处理 IN 参数的方法;而 CallableStatement 添加了处理 OUT 参数的方法。
有些 DBMS 将已存储过程中的每条语句视为独立的语句;而另外一些则将整个过程视为一个复合语句。在启用自动提交时,这种差别就变得非常重要,因为它影响什么时候调用 commit 方法。在前一种情况中,每条语句单独提交;在后一种情况中,所有语句同时提交。
4、关闭 Statement 对象
Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源,有助于避免潜在的内存问题。
‘伍’ 在jdbc进行数据库调用时 采用哪些方式执行sql语句呢
创建Statement对象 使用Statement对象执行语句 语句完成 关闭Statement对象 使用方法execute基于JDBC的数据库通用访问方法
‘陆’ orcale 怎么通过jdbc执行sql文件
首先你要知道jdbc就是是一种用于执行SQL语句的Java API。我写点简单的步骤你参考下~
访问数据库的步骤:
1.加载JDBC驱动的实例,
Class.forName()"oracle.jdbc.driver.OracleDriver";
2.指定数据库
通过连接字符串url指定数据库.
oracle格式: jdbc:oracle:thin:@host:port:sid
String url = jdbc:oracle:thin:@192.168.0.26:1521:tarena
mysql的格式: jdbc:mysql://host:port/databaseName
String url = jdbc:mysql://localhost:3306/openlab
3.打开数据库连接
Connection conn = DriverManager.getConnection(url, dbUser, dbPwd);
三个输入参数: 连接字符串,数据库用户名,数据库密码
如果连接成功,返回连接对象conn.
Connection对象表示一个与特定数据库的会话过程.
4.创建Stetement
Statememt stmt = conn.createStatement();
5.提交sql,并返回结果
//查询语句的执行,使用stmt.executeQuery(sql)方法.
String sql = "select id, name from employees";
ResuleSet rs = stmt.executeQuery(sql);
//DML(insert/update/delete)语句,
String sql = "update employees set salary = 2000"
+ " where salary < 2000";
int result = stmt.executeUpdate(sql);
6.处理结果
1) 查询返回的结果集放在ResultSet对象中.
2) ResultSet是一个二维表结构.
3) ResultSet的最初位置:第一行之前(Before First)
4) 可以使用ResutltSet的next()方法使指针下移一行,
并返回下移后的这一行是否有数据,有返回true,没有返回false
5) rs.getXxx(columnIndex);//Int, String, Double...
rs.getInt(1); 或写成 rs.getInt("id");
rs.getString(2); 或写成 rs.getString("name");
7.关闭资源
rs.close();
stmt.close();
conn.close();
希望能帮到你~
‘柒’ 求救!!怎样在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语句使用哪些类
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
String JDBC_DRIVER = "驱动地址";
String DB_URL = "数据库url,即IP端口";
String USER = "数据库账号";
String PWD = "数据库密码";
try {
//注册加载jdbc驱动
Class.forName(JDBC_DRIVER);
//打开连接
conn = DriverManager.getConnection(DB_URL,USER,PWD);
//创建执行对象
stmt = conn.createStatement();
String testUrl = "select * from project_table";
//执行sql语句
ResultSet rs = stmt.executeQuery(testUrl);
//ResultSetMetaData rsmd = rs.getMetaData();
//展开结果集
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}