一、下载Java 连接 MySQL 需要驱动包。
最新版下载地址为:http://dev.mysql.com/downloads/connector/j/,
解压后得到jar库文件,然后在对应的项目中导入该库文件。
关于驱动我想说一点,也是最近实验才发现的,以前都没有发现,总是出现一些驱动连接错误,更加详细了解可以参照点我这篇博文。
二、代码如下:
package com.stu.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test01 {
public static void main(String[] args) throws Exception {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 建立连接
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
// 获取传输器对象建立会话
String sql = "select * from dept where deptno=?";
// sql = "insert into dept values (?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 30);
// ps.setInt(1, 100);
// ps.setString(2, "保洁部");
// ps.setString(3, "全国");
// 输出结果
ResultSet rs = ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
//关闭数据库
rs.close();
ps.close();
conn.close();
}
}
三、注意:
1、PreparedStatement是 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数(使用参数会出现SQL语句错误)
2、PreparedStatement 的执行效率高于Statement对象,对于需要多次执行的SQL语句经常使用PreparedStatement 。PreparedStatement可以使用占位符 " ? ",是预编译的,批处理比Statement效率
高。
3、注意PreparedStatement对象独有的executeQuery()方法是没有参数的,而Statement的executeQuery()是需要参数(SQL语句)的。因为在创建PreparedStatement对象时已经让它与一条SQL模板绑定在一起了,所以在调用它的executeQuery()和executeUpdate()方法时就不再需要参数了。PreparedStatement最大的好处就是在于重复使用同一模板,给予其不同的参数来重复的使用它。这才是真正提高效率的原因。
示例代码:
package com.stu.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test01 {
public static void main(String[] args) throws Exception {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//建立连接
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
//建立会话
String sql = "select * from dept where deptno=?";
// sql = "insert into dept values (?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 10);
// ps.setInt(1, 100);
// ps.setString(2, "保洁部");
// ps.setString(3, "全国");
//输出结果
ResultSet rs = ps.ex);
while (rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
}
}
}
很小的区别,和老师找了好久才出现的
Statement:ResultSet rs = ps.executeQuery(sql); ----->错误
prepareStatement:ResultSet rs = ps.executeQuery(): ------>正确