JDBC连接数据库(增删改查)
如果连接数据库有问题可以观看上一篇文章,这里不在多说。项目目录如图所示:
1、首先看一下工具类:
跟上一篇文章唯不同的是closeRs变成了closePs方法,release方法也对应的变化,建立一个新表。最后给看全部代码。
2、先看Main类:
此次代码将Statement类换成了PrepareStatement类,因为后者的安全系数高。
(1)主函数:
public static void main(String[] args){
Connection conn = null;
try {
//从工具类中获取conn,连接数据库,具体原理看上一篇文章
conn = Tool.getConnection();
//调用查找方法
Select(conn);
//调用添加方法
// Insert(conn,"zhangchong","555555");
//调用删除方法
// Delete(conn,4);
//调用更新方法
// Update(conn,1,"dai");
} catch (Exception e) {
e.printStackTrace();
}finally {
Tool.closeConn(conn);
}
}
(2)‘增’方法
public static void Insert(Connection conn,String username,String password) {
//定义sql语句,?为占位符
String sql = "insert into login values(null,?,?)";
PreparedStatement ps = null;
try {
//在数据库中对sql进行预处理
ps = conn.prepareStatement(sql);
//对sql语句中的?进行添加具体值,其中第一个?为1,第二个?为2
ps.setString(1,username);
ps.setString(2, password);
//将在数据库中执行的结果返回,result值为添加成功了result行
int result = ps.executeUpdate();
if(result > 0)
System.out.println("添加成功!!!");
else
System.out.println("添加失败!!!");
} catch (SQLException e) {
e.printStackTrace();
}finally {
Tool.closePs(ps);
}
}
(2)'删’方法
public static void Delete(Connection conn,int id) {
String sql = "delete from login where id = ?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
//添加整型数值
ps.setInt(1, id);
int result = ps.executeUpdate();
if(result > 0)
System.out.println("删除成功!!!");
else
System.out.println("删除失败!!!");
} catch (SQLException e) {
e.printStackTrace();
}
}
(3)'改’方法
public static void Update(Connection conn,int id,String username) {
String sql = "update login set username=? where id = ?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setInt(2, id);
int result = ps.executeUpdate();
if(result > 0)
System.out.println("更新成功!!!");
else
System.out.println("更新失败!!!");
} catch (SQLException e) {
e.printStackTrace();
}
}
(4)'查’方法
public static void Select(Connection conn) {
String sql = "select * from login";
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
//返回查询结果给ResultSet对象
rs = ps.executeQuery();
while(rs.next()) {
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println("id = " + id + ",username = " + username + ",password= " + password) ;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
Tool.closeRs(rs);
}
}
3、完整代码
(1)Main类:
package JDBC;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import Util.Tool;
public class Main {
public static void main(String[] args){
Connection conn = null;
try {
conn = Tool.getConnection();
Select(conn);
// Insert(conn,"zhangchong","555555");
// Delete(conn,4);
// Update(conn,1,"dai");
} catch (Exception e) {
e.printStackTrace();
}finally {
Tool.closeConn(conn);
}
}
public static void Select(Connection conn) {
String sql = "select * from login";
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println("id = " + id + ",username = " + username + ",password= " + password) ;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
Tool.closeRs(rs);
}
}
public static void Insert(Connection conn,String username,String password) {
String sql = "insert into login values(null,?,?)";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setString(1,username);
ps.setString(2, password);
int result = ps.executeUpdate();
if(result > 0)
System.out.println("添加成功!!!");
else
System.out.println("添加失败!!!");
} catch (SQLException e) {
e.printStackTrace();
}finally {
Tool.closePs(ps);
}
}
public static void Delete(Connection conn,int id) {
String sql = "delete from login where id = ?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
int result = ps.executeUpdate();
if(result > 0)
System.out.println("删除成功!!!");
else
System.out.println("删除失败!!!");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void Update(Connection conn,int id,String username) {
String sql = "update login set username=? where id = ?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setInt(2, id);
int result = ps.executeUpdate();
if(result > 0)
System.out.println("更新成功!!!");
else
System.out.println("更新失败!!!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
(2)Tool类:
package Util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class Tool {
private static String driverClass = null;
private static String url = null;
private static String username = null;
private static String password = null;
static {
try {
// 创建一个文件配置对象
Properties properties = new Properties();
// 对应文件位于工程根目录下
// InputStream is = new FileInputStream("jdbc.properties");
// 加载字节码文件时候直接加载,使用类加载器,去读取src底下的源文件。后面再servlet,对应文件位于的工程根目录
InputStream is = Tool.class.getClassLoader().getResourceAsStream("jdbc.properties");
// 导入输入流
properties.load(is);
// 读取属性
driverClass = properties.getProperty("driverClass");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} catch (IOException e) {
e.printStackTrace();
}
}
// 连接对象
public static Connection getConnection() {
Connection conn = null;
try {
//注册驱动,jdbc4.0后自动加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 连接数据库
conn = DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
// 释放资源,关闭流
public static void release(Connection conn,ResultSet rs,PreparedStatement ps) {
closeRs(rs);
closeConn(conn);
closePs(ps);
}
public static void closeRs(ResultSet rs) {
try {
if(rs != null)
rs.close();
}catch(SQLException e) {
e.printStackTrace();
}finally {
rs = null;
}
}
public static void closeConn(Connection conn) {
try {
if( conn != null)
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}finally {
conn = null;
}
}
public static void closePs(PreparedStatement ps) {
try {
if(ps != null)
ps.close();
}catch(SQLException e) {
e.printStackTrace();
}finally {
ps = null;
}
}
}
(3)配置文件
driveClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/jdbc_test
username=root
password=111111