JDBC(Java连接MySQL数据库)
- JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
- 使用jdbc可以操作本机或局域网中机子上的数据库。
- 连接好后进而可以创建表,再对表进行增、删、改、查。
JDBC的使用步骤
1导入jar包
导入MySQL-connection-Java-5.1.47.jar项目
1.在项目中新建一个lib文件夹
2.把jar拷贝到文件夹中
3.反键点击jar,点击Build Path 在点击add
2加载驱动(根据数据库不同加载不同驱动)
//在代码块中加载驱动
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3.连接数据库
启动数据库
>mysql -utoot -p123456
//连接信息
private static String user = "root";
private static String password = "123456";
private static Connection connection;
/*
* 数据库连接地址
* jdbc:mysql:// : 协议名称
* localhost:3306 : 服务器的地址
* jdbc_db : 数据库名称
* */
private static String url = "jdbc:mysql://localhost:3306/jdbc_db";
public static Connection getConnection() {
try {
if(connection == null || connection.isClosed()) {
try {
connection = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return connection;
}
4.获取操作句柄
Statement sta = null;
//通过数据库连接得到操作数据库的句柄
sta = connection.createStatement();
5.执行SQL语句
String sql = "INSERT user(name,password) VALUES ('"+ user.getName() +"','"+user.getPassword()+"')";
//插入
sta.executeUpdate(sql);
增删查改方法的封装
增
public void insertDept(Dept dept) {
//1.写SQL语句
String sql = "INSERT dept VALUES (?,?,?)";
PreparedStatement ps = null;
try {
//2.从数据库连接中得到操作数据库的句柄
ps = connection.prepareStatement(sql);
//3.设置参数
ps.setInt(1, dept.getDeptno());
ps.setString(2, dept.getDname());
ps.setString(3, dept.getLoc());
//执行SQL语句
int len = ps.executeUpdate();
System.out.println("插入成功,一共插入了" + len +"行!");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(ps != null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
查
public Dept selectDeptByDeptno(int deptno) {
//1.写SQL语句
String sql = "SELECT * FROM dept WHERE deptno = ?";
PreparedStatement ps = null;
ResultSet set = null;
Dept result = null;
try {
//2.从数据库连接中得到操作数据库的句柄
ps = connection.prepareStatement(sql);
//3.设置参数
ps.setInt(1, deptno);
//4.执行SQL语句
set = ps.executeQuery();
while(set.next()) {
result = new Dept();
result.setDeptno(set.getInt("deptno"));
result.setDname(set.getString("dname"));
result.setLoc(set.getString("loc"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(ps != null) {
try {
ps.close();
set.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return result;
}
public Dept selectDeptByDeptno(int deptno) {
//1.写SQL语句
String sql = "SELECT * FROM dept WHERE deptno = ?";
PreparedStatement ps = null;
ResultSet set = null;
Dept result = null;
try {
//2.从数据库连接中得到操作数据库的句柄
ps = connection.prepareStatement(sql);
//3.设置参数
ps.setInt(1, deptno);
//4.执行SQL语句
set = ps.executeQuery();
while(set.next()) {
result = new Dept();
result.setDeptno(set.getInt("deptno"));
result.setDname(set.getString("dname"));
result.setLoc(set.getString("loc"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(ps != null) {
try {
ps.close();
set.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}