这一次我尝试用Java语句来查找到数据库中的数据。
准备的软件有:eclipse、mysql、SQLyogEnt
需要的jar包是:mysql-connector-java-5.1.18-bin.jar
操作开始:
-
建数据库myschool、建表student
数据库:drop database if exists myschool; “;”是输入法处于英文状态下的分号
Create database myschool;
建表: use myschool; 输入信息,自己使用insert语句进行插入。
|
|
|
CREATE TABLE `student` ( |
图中主键是studentNo,也就是学生编号;我们所要做的就是利用学生标号查找到学生的名字,也就是studentName。此处我们要查找的10000编号的学生名字是什么。另外我建了个数据库,叫myschool。
-
在eclipse建java项目,名叫Example,建包,包名分别为dao、entity,dao包是数据访问层,entity包是实体类层,jar包导入到lib文件夹中,jar包的导入方法在网上能查到,
-
准备工作已完毕,现在开始编代码
-
、到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();
}
}
}
-
、在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;
}
}
-
、后期因为需要建了一个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代码连接到MySQL数据库并查询数据。通过建立数据库连接、加载驱动、执行查询语句,实现了根据学生编号查找学生姓名的功能。示例代码包括BaseDao类、Student实体类以及业务实现类Achieve。
628

被折叠的 条评论
为什么被折叠?



