jdbcj简单使用学习笔记
jdbc是什么?Java 数据库连接,(Java Database Connectivity)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。jdbc是面向关系型数据库的。
一,使用前准备工作
1,在使用jdbc之前,我们需要安装数据库,这里我使用5.26.24;不知道自己版本的可以用命令status查看。

2,接着我们需要相应的jar包作为MySQL数据库的驱动,不同数据库库对应的jar包、驱动类名和URL格式可以以以下链接为参考,具体使用依照自己版本酌情使用。
http://www.cnblogs.com/kunpengit/archive/2011/12/13/2285933.html
在这里我使用:

版本和MySQL版本不完全相同,但变更不大,并不影响使用。
3,接下来我们在数据库中建一个表student,我使用数据库可视化工具navicat.大家也可以使用命令行建表。具体操作命令可以参照下面链接
http://www.cnblogs.com/bzys/archive/2013/01/20/2869029.html

二,编码对MySQL数据库进行操作
首先建一个Student类
package test.jdbc.models;
public class Student {
int id;
String name;
int sex;//1为男;0为女
int age;
double grade;
public Student(int id, String name, int sex, int age, double grade) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
this.grade = grade;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
}
创建一个测试类
package test.jdbc.first;
import java.sql.SQLException;
import java.util.Properties;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.util.PropertiesDocGenerator;
import test.jdbc.models.Student;
public class TestJDBC {
public static void main(String[] args) throws SQLException {
Student student=new Student(4, "Kyler", 1, 2, 64.65);
insert(student);
}
//向数据库中插入数据
private static int insert(Student student) throws SQLException {
Connection conn = getConn();
int i = 0;
String sql = "insert into student (id,Name,Sex,Age,grade) values(?,?,?,?,?)";
PreparedStatement preparestatement;
try {
//预编译的sql语句对象
preparestatement = (PreparedStatement) conn.prepareStatement(sql);
preparestatement.setInt(1, student.getId());
preparestatement.setString(2, student.getName());
preparestatement.setInt(3, student.getSex());
preparestatement.setInt(4, student.getAge());
preparestatement.setDouble(5, student.getGrade());
// executeUpdate() 在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 //INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。(ddl是数据库模式定义语言,是用于描述数据库中要存储的现实世界实体的语言
//常见的DDL语句例如:创建数据库:CREATE DATABASE创建表:CREATE TABLE)
i = preparestatement.executeUpdate();
preparestatement.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}
//查询数据库中的数据
private static Integer getAll() throws SQLException {
Connection conn = getConn();
String sql = "select * from student";
PreparedStatement preparestatement;
try {
preparestatement = (PreparedStatement)conn.prepareStatement(sql);
//在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
ResultSet rs = preparestatement.executeQuery();
int col = rs.getMetaData().getColumnCount();
System.out.println("============================");
while (rs.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(rs.getString(i) + "\t");
if ((i == 2) && (rs.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
preparestatement.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//获取连接的方法
private static Connection getConn() throws SQLException {
Driver driver=new com.mysql.jdbc.Driver();
//准备数据库连接的基本信息
String url="jdbc:mysql://localhost:3306/first";
Properties info=new Properties();
info.put("user", "root");
info.put("password", "");
//获取数据库连接
Connection connection=(Connection) driver.connect(url, info);
return connection;
}
}
insert()执行后实验结果如下所示:

getAll()执行后结果如下所示

使用jdbc链接数据库的基本过程如下,
1,首先获取连接Connection对象,这里面包括加载驱动,传入连接的基本信息,获得连接。
2,对Connection对象传入SQL查询命令(一个字符串),获得PreparedStatement对象;
3,对PreparedStatement对象执行executeUpdate()或executeQurey()获得结果;executeUpdate()执行无返回值的sql语句。
4,关闭PreparedStatement对象和Connection对象。
每次执行sql操作都会消耗大量的资源,因此可以使用资源池对连接进行管理,以节省资源。

浙公网安备 33010602011771号