1,JDBC 是java用来跟数据库建立连接的一种技术,可以说是java的一套用来建立连接的API,它是连接数据库和Java应用程序的一个纽带。下面用JDBC技术利用程序来对数据库进行增删改查。
2,
- package com.myivtec.util;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- public class JdbcUtil {
- //这个url用来跟数据库建立连接
- //localhost 这个是用来建立连接的数据库的ip地址
- //3306是要连接的端口,就是数据库绑定的端口
- // db这个是要建立连接的数据库的名字
- //useUnicode=true&characterEncoding=UTF-8这里使用unicode编码,编码格式是UTF-8,就是跟数据库建立连接的格式
- //这个字符集的设置是用来解决中文乱码问题的
- static String url ="jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8";
- //这个连接数据库的用户名
- static String username = "root";
- //这个是连接数据库的密码
- static String password = "root";
- //注册驱动
- static {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //得到一个数据库的连接
- public static Connection getConnection() throws Exception{
- return DriverManager.getConnection(url,username,password);
- }
- //这个方法用来释放连接
- //ResultSet是结果集,从数据库里查询出来的数据会存放在这里
- //Statement 这个是用来执行事务,SQL语句的
- //Connection是跟数据库之间的连接
- public static void free(ResultSet rs,Statement st,Connection con){
- if(rs!=null){
- try {
- rs.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- if(st!=null){
- try {
- st.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- if(con!=null){
- try {
- con.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
2,model类跟数据库进行对应
- package com.myivtec.model;
- public class User {
- private int id;
- private String username;
- private String password;
- /**
- * 1 代表管理员
- * 2 普通用户
- */
- private int isAdmin = 2;
- private String email;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public int getIsAdmin() {
- return isAdmin;
- }
- public void setIsAdmin(int isAdmin) {
- this.isAdmin = isAdmin;
- }
- }
在数据库中对应的表的结构
- mysql> desc user
- -> ;
- +----------+--------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +----------+--------------+------+-----+---------+----------------+
- | id | int(11) | NO | PRI | NULL | auto_increment |
- | username | varchar(100) | YES | | NULL | |
- | password | varchar(100) | YES | | NULL | |
- | isAdmin | int(11) | YES | | NULL | |
- | email | varchar(100) | YES | | NULL | |
- +----------+--------------+------+-----+---------+----------------+
- 5 rows in set (0.01 sec)
3,DAO层
- package com.myivtec.dao;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import com.myivtec.form.CommonForm;
- import com.myivtec.model.User;
- import com.myivtec.util.JdbcUtil;
- public class UserDao {
- /**
- * 此方法用户查询用户名是否存在
- * @param username要查询的用户名
- * @return true存在 false不存在
- */
- public boolean isExit(String username){
- boolean res = false;
- Connection con = null;
- ResultSet rs = null;
- PreparedStatement ps = null;
- try {
- /**
- * 得到一个数据库连接
- */
- con = JdbcUtil.getConnection();
- /**
- * 要执行查询SQL语句 ? 代表 要插入的参数条件
- */
- String sql = "select * from user where username = ?" ;
- ps = con.prepareStatement(sql);
- //这里讲参数替换条
- ps.setString(1, username);
- //执行查询,把结果存放在结果集对象rs中
- rs = ps.executeQuery();
- //结果集中有数据的话 将res设为true
- while(rs.next()){
- res = true;
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- //释放连接资源
- JdbcUtil.free(rs, ps, con);
- }
- return res;
- }
- /**
- * 这个是登陆方法,用来验证用户输入的用户名和密码是否正确,就是在数据库中查询是否存在这样的一条记录
- * @param username
- * @param password
- * @return
- */
- public User login(String username,String password){
- User user = null;
- Connection con = null;
- ResultSet rs = null;
- PreparedStatement ps = null;
- try {
- //得到数据库的一个连接
- con = JdbcUtil.getConnection();
- //要执行的SQL语句
- String sql = "select username,password,isAdmin from user where username=? and password= ?";
- //创建一个PrepareStatement对象用来准备要执行的SQL语句
- ps = con.prepareStatement(sql);
- //把参数设进去
- //1代表第一个问号
- //2代表第二个问号
- ps.setString(1, username);
- ps.setString(2, password);
- //执行查询语句,并将结果存放在结果集rs中
- rs = ps.executeQuery();
- while(rs.next()){
- user = new User();
- //根据结果集,将结果构造一个对象
- //根据列明得到要查询列的值
- user.setIsAdmin(rs.getInt("isAdmin"));
- user.setUsername(rs.getString("username"));
- user.setPassword(rs.getString("password"));
- }
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- //释放连接
- JdbcUtil.free(rs, ps, con);
- }
- return user;
- }
- }
转载于:https://blog.51cto.com/soukenan/1054362