mysql语言是数据的行数据_MY-SQL 与 数据库 连接

JDBC连接常用的数据库驱动程序的加载方法

① JDBC连接SQLServer2000

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

String

url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";

String user="sa";

String password="";

Connection conn=

DriverManager.getConnection(url,user,password);

② JDBC连接SQLServer2005

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

String url="

jdbc:sqlserver://localhost:1433;DatabaseName=mydb";

③ JDBC连接Oracle8/8i/9i数据库(thin模式)

Class.forName("oracle.jdbc.driver.OracleDriver");

String url=”jdbc:

oracle:thin:@localhost:1521:orcl”;

String user=”test”;

String password=”test”;

Connection con =

DriverManager.getConnection(url,user,password);

④ JDBC连接MySQL

Class.forName("com.mysql.jdbc.Driver");-----加载连接数据库的驱动程序

String url=“jdbc:mysql://localhost:3306/lottery”;----- 创建与数据库的连接

String user = "root";

String password = "root";

步骤

(1)加载连接数据库的驱动程序

(2)创建与数据库的连接

(3)通过连接对象,得到指令对象

JDBC提供了三个类,用于向数据库发送SQL语句,Connection接口中的三个方法可以用于创建这些类的实例。它们分别是Statement、PreparedStatement及CallableStatement。

(4)用指令对象执行SQL语句

(5)得到结果集,对结果集做相应的处理(增、删、改、查)

(6)关闭资源(这里释放的是数据库中的资源)

1.Statement对象

(1)创建Statement 对象

Statement 对象用 Connection 的createStatement方法创建,用来执行静态的SQL语句并返回执行的结果。如下列代码段所示:

String sql = "……";

Connection con =

DriverManager.getConnection(url,username,password);

Statement stmt =

con.createStatement(sql);

(2)使用

Statement 对象执行语句

Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由

SQL 语句所产生的内容决定。

① ResultSet executeQuery(String sql):用于产生单个结果集的语句,例如SELECT语句。在Statement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。

例如:ResultSet rs=stmt.

executeQuery(sql);

② int executeUpdate(String sql):用于执行INSETR、UPDATE及DELETE语句以及SQL DDL(数据定义语言)语句,例如CREATE TABLE、DROP TABLE等。返回一个整数值,指示受影响的行数。

例如:stmt. executeUpdate(sql);

③ boolean execute(String sql):执行sql语句调用最一般的方法,允许用户执行SQL数据定义语言命令,然后获得一个布尔值,它显示是否返回了ResultSet对象。用于执行返回多个结果集、多个更新计数或两者组合的语句。因为多数程序员不会需要该高级功能,所以在此不做具体介绍。

(3)关闭

Statement 对象

Statement 对象将由 Java 垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要 Statement 对象时显式地关闭它们。这将立即释放 DBMS 资源,有助于避免潜在的内存问题。

例如:stmt. close();

1.ResultSet对象

ResultSet对象表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

下面的代码段是执行 SQL 语句生成ResultSet对象的示例。

String sql = "……";

ResultSet rs=stmt.executeQuery(sql);

//使用Statement对象中的executeQuery方法

ResultSet rs=ps.executeQuery();

//使用PreparedStatement对象中的executeQuery方法

ResultSet rs=cs.executeQuery();

//使用CallableStatement对象中的

executeQuery方法

ResultSet 对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next 方法将光标移动到下一行;因为该方法在 ResultSet 对象没有下一行时返回 false,所以可以在

while 循环中使用它来迭代结果集。通常总是在循环中处理结果集中的各行,使用next方法移动光标。如下列代码段所示:

while(rs.next()){

//具体实现

}

ResultSet 接口提供用于从当前行获取列值的获取方法(getBoolean、getLong 等)。可以使用列的索引编号或列的名称获取值。一般情况下,使用列索引较为高效,列从 1 开始编号。为了获得最大的可移植性,应该按从左到右的顺序读取每行中的结果集列,每列只能读取一次。如下列代码段所示:

rs.getString(1); //使用索引编号获取值

rs.getString("p_name"); //使用列的名称获取值

注意:用作获取方法的输入的列名称不区分大小写。用列名称调用获取方法时,如果多个列具有这一名称,则返回第一个匹配列的值。对于没有在查询中显式指定的列,最好使用列编号。如果使用列名称,则程序员应该注意保证名称唯一引用预期的列,如果列名不唯一,可以使用

SQL AS 子句确定。

注意:用作获取方法的输入的列名称不区分大小写。用列名称调用获取方法时,如果多个列具有这一名称,则返回第一个匹配列的值。对于没有在查询中显式指定的列,最好使用列编号。如果使用列名称,则程序员应该注意保证名称唯一引用预期的列,如果列名不唯一,可以使用

SQL AS 子句确定。

(1)创建

PreparedStatement 对象

PreparedStatement 接口表示预编译的SQL语句的对象,并且有占位符用于运行时的参数值。当语句要执行多次(如向表中加入新的行)的时候,PreparedStatement对象特别有用。如下列代码段所示:

String sql = " insert into

person(p_name,p_sex,p_birth,p_telephone,p_email,p_address)"

+ "values(?,?,?,?,?)";

Connection con =

DriverManager.getConnection(url,username,password);

PreparedStatement ps =

con.prepareStatement(sql);

ps.setString(1, name);

ps.setString(2, sex);

ps.setString(3, telephone);

ps.setString(4, email);

ps.setString(5, address);

(2)传递

IN 参数

包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在

SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代 IN 参数占位符的值。

在执行 PreparedStatement 对象之前,必须设置每个“?”参数的值。这可通过调用

setXXX 方法来完成,其中 XXX 是与该参数相应的类型。例如,如果参数具有Java 类型 String,则使用的方法就是

setString。setXXX 方法的第一个参数是要设置的参数的序数位置,第二个参数是设置给该参数的值。如下列代码段所示:

ps.setString(1, name);

ps.setString(2, sex);

ps.setString(3, telephone);

ps.setString(4, email);

ps.setString(5, address);

(3)使用

PreparedStatement 对象执行语句

PreparedStatement接口继承了

Statement的三种方法

execute、

executeQuery 和 executeUpdate,但是已被更改以使之不再需要参数。

① 在PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。

ResultSet rs=ps.

executeQuery(); //

executeQuery()方法不再需要参数

② 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation

Language,DML)语句,比如

INSERT、UPDATE 或 DELETE 语句,或者是无返回内容的 SQL 语句,比如 DDL 语句。

ps.

executeUpdate();//executeUpdate()方法不再需要参数

CallableStatement对象

用于执行SQL存储过程的接口,存储过程是执行特定操作的子程序。CallableStatement扩展了PreparedStatement。

(1)创建

CallableStatement 对象

CallableStatement 对象是用 Connection 方法 prepareCall 创建的。

① 无参数存储过程:{ call procedure_name}

② 仅有输入参数的存储过程:{call procedure_name(?,?...)}

创建 CallableStatement 的实例,其中包含对存储存过程insert_proc调用。该存储过程有五个输入参数,但不含输出参数,如下列代码段所示:

Connection con =

DriverManager.getConnection(url,username,password);

CallableStatement cs =

con.prepareCall("{call insert_proc(?,?,?,?,?)}");

(2)传递IN参数

将IN参数传给

CallableStatement 对象是通过 setXXX 方法完成的。该方法继承自 PreparedStatement。所传入参数的类型决定了所用的setXXX方法(例如,用

setString 来传入 String类型值等)。参数是根据编号按顺序引用的,第一个参数的编号是1。如下列代码段所示:

cs.setString(1, kch);

cs.setString(2, kcm);

cs.setString(3, xq);

cs.setString(4, xs);

cs.setString(5, xf);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值