JDBC学习总结
利用SQLyog创建数据库
准备工作
1.打开idea创建工程
2.导入jar包
<1>.新建一个lib包
将下载好的驱动ctrl+c、ctrl+v复制进来,之后点击包名单击鼠标右键Add as Library…
3.新建一个Test类,在里面进行操作
数据操作步骤
1.加载驱动
2.创建连接
3.写sql
4.得到statement对象执行sql
5.执行sql得到结果集
6.处理结果集
7.关闭资源
下面的内容为上述部分详细代码:
1.加载驱动:Class.forName("com.mysql.jdbc.Driver");
2.创建连接:
Connection connection=null;
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
3.写sql
String sql="select * from userinfo";
4.得到statement对象执行sql
PreparedStatement statement=null;
statement=connection.prepareStatement(sql);
5.执行sql得到结果集
rs=statement.executeQuery();
6.处理结果集
while(rs.next()){
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString(2)+"\t");
System.out.print(rs.getString(3)+"\n");
}
输出的结果为:
7.关闭资源
首先判断一下是否为空,若不为空,再释放资源(这一部分放在finally块里面)
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
sql的增、删、改(查见上述内容)
1.增加一条信息
PreparedStatement statement=null;
String sql="insert into userinfo (id,username,password) values(?,?,?)";
try {
statement=connection.prepareStatement(sql);
statement.setInt(1,5);
statement.setString(2,"Insert");
statement.setString(3,"123");
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
结果:
2.修改一条信息
String sql="update userinfo set username=?,password=? where id=4";
try {
statement=connection.prepareStatement(sql);
statement.setString(1,"isOK");
statement.setString(2,"789");
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
结果:
3.删除id=5的用户信息
Statement ss= null;
try {
//删除
ss = connection.createStatement();
ss.executeUpdate("delete from userinfo where id=5");
} catch (SQLException e) {
e.printStackTrace();
}
结果:
封装连接数据库、关闭连接的操作:
public static Connection getConnection()
{
Connection connection=null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&characterEncoding=utf-8&user=root&password=123");
return connection;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void closeResource(ResultSet rs, Statement statement,Connection connection)
{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
其它需要此操作的地方调用函数即可,使代码看起来更加简洁
eg:Connection connection; connection =Jdbcutil.getConnection();
类、操作的封装
建立一个bean包,包含实体类UserInfo:内含属性、getter、setter方法,以及toString方法(可鼠标单击右键,点击Generate…自动生成)
修改查询操作(利用列表存储对象避免新对象覆盖旧对象):
List<UserInfo> list=new ArrayList<>();
while(rs.next()){
UserInfo userInfo=new UserInfo();
userInfo.setId(rs.getInt(1));
userInfo.setUsername(rs.getString(2));
userInfo.setPassword(rs.getString(3));
list.add(userInfo);
// System.out.println(userInfo.toString());
}
建立一个dao包——对数据库进行数据持久化操作
将增、删、查、改的操作均封装起来放置在此包的UserInfoDao类中
实现增删查改
此时只需在Test类中的main方法里面创建一个UserInfoDao的对象,调用里面相应的方法即可对数据库进行更改。
public class Test {
public static void main(String[] args){
UserInfoDao userInfoDao=new UserInfoDao();
//增
userInfoDao.add("fenzhuang","135");
//改
userInfoDao.update(5,"testupdate","246");
//删
userInfoDao.delete(7);
userInfoDao.delete(8);
//查
List<UserInfo> list=userInfoDao.findAll();
//打印数据库中所有用户的信息
System.out.println(list);
}
}