用java语句来查找数据库中的数据



这一次我尝试用Java语句来查找到数据库中的数据。

准备的软件有:eclipsemysqlSQLyogEnt

需要的jar包是:mysql-connector-java-5.1.18-bin.jar

操作开始:

  1. 建数据库myschool、建表student

    数据库:drop database if exists myschool;         ;是输入法处于英文状态下的分号

            Create database myschool;

    建表: use myschool;   输入信息,自己使用insert语句进行插入。

 

CREATE TABLE `student` (
   `studentNo` int(4) NOT NULL COMMENT '学号',
   `loginPwd` varchar(20) NOT NULL COMMENT '密码',
   `studentName` varchar(50) NOT NULL COMMENT '学生姓名',
   `sex` char(2) NOT NULL DEFAULT '男' COMMENT '性别',
   `gradeId` int(4) DEFAULT NULL COMMENT '学期编号',
   `phone` varchar(50) DEFAULT NULL COMMENT '联系电话',
   `address` varchar(255) DEFAULT NULL COMMENT '地址',
   `bornDate` datetime DEFAULT NULL COMMENT '出生时间',
   `email` varchar(50) DEFAULT NULL COMMENT '邮件账号',
   `identityCard` varchar(18) DEFAULT NULL COMMENT '身份证号码',
   PRIMARY KEY (`studentNo`),
   KEY `FK_student` (`gradeId`),
   CONSTRAINT `FK_student` FOREIGN KEY (`gradeId`) REFERENCES `grade` (`gradeID`) ON UPDATE NO ACTION
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

 

 

图中主键是studentNo,也就是学生编号;我们所要做的就是利用学生标号查找到学生的名字,也就是studentName。此处我们要查找的10000编号的学生名字是什么。另外我建了个数据库,叫myschool

 

 

  1. eclipsejava项目,名叫Example,建包,包名分别为daoentitydao包是数据访问层,entity包是实体类层,jar包导入到lib文件夹中,jar包的导入方法在网上能查到,

     

     

  2. 准备工作已完毕,现在开始编代码

  1. dao包中有BaseDao.java文件。具体代码如下:

    package dao;

     

    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.util.Properties;

     

    public class BaseDao {

    Connection conn = null;

    PreparedStatement ps = null;

    ResultSet rs = null;

    static String driver = null;

    static String url = null;

    static String user = null;

    static String password = null;

    // 静态类与init()方法都是用来读取配置文件的

    static {

    init();

    }

     

    public static void init() {

    Properties properties = new Properties();

    String file = "database.properties";// 必须放在src

    // 从类的根目录中读取文件

    InputStream is = BaseDao.class.getClassLoader().getResourceAsStream(file);

    try {

    properties.load(is);

    } catch (IOException e) {

    e.printStackTrace();

    }

    driver = properties.getProperty("driver");

    url = properties.getProperty("url");

    user = properties.getProperty("user");

    password = properties.getProperty("password");

    }

     

    public Connection getConnection() {

    Connection con = null;

    try {

    // 加载驱动

    Class.forName(driver);

    // 建立连接

    con = DriverManager.getConnection(url, user, password);

    } catch (ClassNotFoundException e) {

    e.printStackTrace();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return con;

    }

     

    // 执行查询操作

    public ResultSet executeQuery(String sql, Object[] data) {

    try {

    conn = getConnection();

    ps = conn.prepareStatement(sql);

    for (int i = 0; i < data.length; i++) {

    ps.setObject(i + 1, data[i]);

    }

    rs = ps.executeQuery();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    return rs;

    }

    // 关闭连接

    public void close() {

    try {

    if (rs != null) {

    rs.close();

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }

    try {

    if (ps != null) {

    ps.close();

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }

    try {

    if (conn != null) {

    conn.close();

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }

     

    }

    }

     

  2. entity包中有Student.java文件,Student是一个实体类。具体代码如下:

    package entity;

     

    import java.util.Date;

    //学生表信息

    public class Student {

    private int studentNo;

    private String loginPwd;

    private String studentName;

    private char sex;

    private int gradeId;

    private String phone;

    private String address;

    private Date date;

    private String email;

    private String identityCard;

     

    public Student() {

     

    }

     

    public Student(int studentNo, String loginPwd, String studentName, char sex, int gradeId, String phone,

    String address, Date date, String email, String identityCard) {

    super();

    this.studentNo = studentNo;

    this.loginPwd = loginPwd;

    this.studentName = studentName;

    this.sex = sex;

    this.gradeId = gradeId;

    this.phone = phone;

    this.address = address;

    this.date = date;

    this.email = email;

    this.identityCard = identityCard;

    }

     

    public int getStudentNo() {

    return studentNo;

    }

     

    public String getLoginPwd() {

    return loginPwd;

    }

     

    public String getStudentName() {

    return studentName;

    }

     

    public char getSex() {

    return sex;

    }

     

    public int getGradeId() {

    return gradeId;

    }

     

    public String getPhone() {

    return phone;

    }

     

    public String getAddress() {

    return address;

    }

     

    public Date getDate() {

    return date;

    }

     

    public String getEmail() {

    return email;

    }

     

    public String getIdentityCard() {

    return identityCard;

    }

     

    public void setStudentNo(int studentNo) {

    this.studentNo = studentNo;

    }

     

    public void setLoginPwd(String loginPwd) {

    this.loginPwd = loginPwd;

    }

     

    public void setStudentName(String studentName) {

    this.studentName = studentName;

    }

     

    public void setSex(char sex) {

    this.sex = sex;

    }

     

    public void setGradeId(int gradeId) {

    this.gradeId = gradeId;

    }

     

    public void setPhone(String phone) {

    this.phone = phone;

    }

     

    public void setAddress(String address) {

    this.address = address;

    }

     

    public void setDate(Date date) {

    this.date = date;

    }

     

    public void setEmail(String email) {

    this.email = email;

    }

     

    public void setIdentityCard(String identityCard) {

    this.identityCard = identityCard;

    }

     

    }

  3. 后期因为需要建了一个service包,有Achieve.java,这是业务实现包。具体代码如下:

    package service;

     

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import dao.BaseDao;

    import entity.Student;

     

    public class Achieve extends BaseDao {

    public Student getStudent(int studentno){

    Student st = new Student();

    String sql = "select * from student where studentno=?";

    Object[] data={studentno};

    ResultSet rs = executeQuery(sql, data);

    try {

    while(rs.next()){

    String stuName = rs.getString("studentname");

    int stuNo = rs.getInt("studentno");

    st.setStudentName(stuName);

    st.setStudentNo(stuNo);

    }

    } catch (SQLException e) {

    e.printStackTrace();

    }finally{

    close();

    }

    return st;

    }

    public static void main(String[] args) {

    Achieve ac=new Achieve();

    Student stu=ac.getStudent(10000);   //输入学生编号为10000,得到结果。

    System.out.println("这位学生,编号是"+stu.getStudentNo()+",姓名是"+stu.getStudentName());

    }

    }

     

    这是最终结果。对照数据库中的表,可知结果正确。

     

     

    里面还有个database.properties,里面是配置信息,具体如下:

    driver:com.mysql.jdbc.Driver

    url:jdbc:mysql://localhost:3306/myschool?useUnicode=true&characterEncoding=utf8

    user:root

    password:123456

     

    以上都是个人打的,已经运行过,结果是正确的,希望大家多多指教。

     

     

     

     

     

你可能感兴趣的:(用java语句来查找数据库中的数据)