java中与mysql连接详细操作

这次我们做java与数据库的连接,参考上一篇文章。这节我们来一个实例。从student数据库中分别打印出每个对象的名字。

  • 数据库操作
    进入数据库时候可以在系统环境变量的path目录下添加mysql\bin路径。这样打开cmd就可以直接使用mysql -uroot -p进行登录操作了。
    建立数据库:
create database micro;

使用数据库:

use micro;

创建表:

create table student(id int not null primary key,name varchar(20) not null);

向表中插入数据:

insert into student(id,name) value(1,"xiaoma");
insert into student(id,name) value(2,"admin");
insert into student(id,name) value(3,"master");
insert into student(id,name) value(4,"manager");

这样我们数据库中的操作就基本完成了。接下来我们来编写对应的使用数据库的部分。

  • 实体类(javabean)student
package micro;

public class Student {
    int sno;
    String name;
    public int getSno() {
        return sno;
    }
    public void setSno(int sno) {
        this.sno = sno;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
  • Dao层
    这一个class主要实现获得连接和关闭连接:
package micro;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;

public class Dao {
    //访问项目的url
    public static String url = "jdbc:mysql://localhost:3306/micro";
    //登录数据库的用户名与密码
    public static String username = "root";
    public static String password = "root";

    //定义数据库连接
    public static Connection getConnection() throws ClassNotFoundException
    {
        Connection conn = null;
        //对数据库的通信都要注意异常抛出
        try
        {
            //第一步加载驱动
            Class.forName("com.mysql.jdbc.Driver");
        }
        catch(ClassNotFoundException e)
        {
            System.out.println("驱动加载出错");
            e.printStackTrace();
        }
        try
        {
            //获得连接
            conn = DriverManager.getConnection(url,username,password);
            System.out.println("获得连接 ");
        }
        catch(SQLException e)
        {
            System.out.println("获得连接出错");
            e.printStackTrace();
        }
        //返回连接
        return conn;
    }
    public static void close(Connection conn,PreparedStatement preparedStatement,ResultSet rs)
    {
        try
        {
            //关闭结果集
            rs.close();
        }
        catch(SQLException e)
        {
            System.out.println("不能关闭结果集");
            e.printStackTrace();
        }
        try
        {
            //关闭编译通道
            preparedStatement.close();
        }
        catch(SQLException e)
        {
            System.out.println("不能关闭编译");
            e.printStackTrace();
        }
        try
        {
            //关闭连接
            conn.close();
        }
        catch(SQLException e)
        {
            System.out.println("不能关闭连接");
            e.printStackTrace();
        }
    }
}
  • 使用连接的Search.class:
package micro;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;



public class Search {
    //将所有查询对象封装为一个集合
    public List<Student> findAll() throws ClassNotFoundException, SQLException
    {
        List<Student> list = null;
        try
        {
            //定义sql语句
            String sql = "select * from student";
            //获得连接
            Connection conn = Dao.getConnection();
            //编译方式为预编译
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            //将执行结果放到结果集
            ResultSet rs = preparedStatement.executeQuery();
            //初始化集合
            list = new ArrayList<Student>();
            //遍历结果集将查找的字段的值放到bean的属性里
            while(rs.next())
            {
                Student stu = new Student();
                //获取结果集元组对应字段的值
                stu.setSno(rs.getInt("id"));
                stu.setName(rs.getString("name"));
                //将对象放到list里
                list.add(stu);
            }
            //遍历结束关闭通道
            Dao.close(conn, preparedStatement, rs);
        }
        catch(SQLException e)
        {
            e.printStackTrace();
        }
        //返回集合
        return list;
    }

}

都准备好了,我们可以编写测试类了:

  • Test
 package micro;

import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;

public class Test {
    public static void main(String args[]) throws ClassNotFoundException, SQLException
    {
        Search sd = new Search();
        List list;
        list = sd.findAll();
        Iterator it = list.iterator();
        int i = 0;
        while(it.hasNext())
        {
            i ++;
            System.out.println("第"+i+"个学生的名字为"+((Student)it.next()).getName());
        }
    }
}

最后附上文件目录结构与运行结果:

这里写图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值