java与Mysql基础应用实例
2017-06-09 19:36
309 查看
这里拿几个类的代码直接进行分析:
这个是一个用户类,用来接收用户数据和返回用户数据。这样封装到一个类里可以提高了数据的安全性。
这个类主要是连接数据库的操作。其中DriverManager.getConnection()是一个登陆数据库的方法,括号中的参数是要连接数据库的url。
这个是一个对user数据库的操作类。
具体分析:
首先是查询操作:
用User定义一个方法findUser(),参数是String类型的username,所以这是一个用来查询用户名的方法。
方法内部:
初始化:
用User定义一个变量user,作为方法的返回。
用Connection定义一个变量conn,作为连接数据库的变量。
连接数据库:
conn = SysDataSource.getInstance().getConnection();这句代码就是将conn连接到指定的数据库上。
设定命令:
PreparedStatement pstmt = conn.prepareStatement(“select * from user where username = ?”);这个PreparedStatement包含已编译的SQL语句。PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。该语句为每个 IN 参数保留一个问号“?”作为占位符。
接着pstmt.setString(1, username); 进行指定命令参数。即将方法中username这个参数填入问号“?”的那个地方。
写入数据:
ResultSet rs = pstmt.executeQuery(); ResultSet是数据中查询结果返回的一种对象,它是一个集合,而executeQuery()方法则是用于SELECT等查询。
然后把user对象化,并使用set方法将数据填入user中,最后返回。
然后是将所有user数据全部查询的操作:
需要用到 List< User >,和上面的查询特定用户操作基本一致,只是prepareStatement对象中的SQL语句为select * from user,所以就把所有数据都查询出来,然后通过while(rs.next())将查询到的所有数据读入。
还有插入操作:
执行一下PreparedStatement pstmt = conn.prepareStatement(“insert into user(username,password,rolename,name) values(?,?,?,?)”);这个语句,再将插入的数据分别填入 “?”中,接着pstmt.execute()用来执行插入这个操作。
删除操作:
执行一下PreparedStatement pstmt = conn.prepareStatement**(“delete from user where username = ?”);这个语句,再将要删除的用户名填入到“?”中,接着**pstmt.execute()用来执行插入这个操作。
User类:
package cn.edu.spu.stumis; public class User { String username; String password; String rolename; String name; public String getUsername() { return username; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getRolename() { return rolename; } public void setRolename(String rolename) { this.rolename = rolename; } public String[] toData(){ String[] data = new String[4]; data[0] = this.getUsername(); data[1] = this.getPassword(); data[2] = this.getRolename(); data[3] = this.getName(); return data; } @Override public String toString(){ return this.getName(); } }
这个是一个用户类,用来接收用户数据和返回用户数据。这样封装到一个类里可以提高了数据的安全性。
SysDataSource类
import java.sql.*; public class SysDataSource { private static SysDataSource dataSource; private Connection conn; private SysDataSource(){ } public static SysDataSource getInstance(){ if(dataSource == null){ dataSource = new SysDataSource(); } return dataSource; } public Connection getConnection() throws SQLException{ if(conn == null || conn.isClosed()) { conn = DriverManager.getConnection("jdbc:mysql://localhost/stu_mis","root",""); } return conn; } }
这个类主要是连接数据库的操作。其中DriverManager.getConnection()是一个登陆数据库的方法,括号中的参数是要连接数据库的url。
UserDAO类
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 UserDAO { /*省略掉,具体在下面*/ public User findUser( String username); public List<User> listUser(); public List<User> listUser(String rolename); public boolean delete(String username); public String[][] toData(){ List<User> list = listUser(); String[][] data = new String[list.size()][4]; for (int i=0; i< list.size(); i++){ data[i] = list.get(i).toData(); } return data; } }
这个是一个对user数据库的操作类。
具体分析:
首先是查询操作:
public User findUser( String username){ User user = null; Connection conn = null; try { //连接数据库 conn = SysDataSource.getInstance().getConnection(); //设定命令 PreparedStatement pstmt = conn.prepareStatement("select * from user where username = ?"); pstmt.setString(1, username);//指定命令参数 ResultSet rs = pstmt.executeQuery();//执行并返回结果 if(rs.next()){ user = new User(); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); user.setRolename(rs.getString("rolename")); user.setName(rs.getString("name")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return user; }
用User定义一个方法findUser(),参数是String类型的username,所以这是一个用来查询用户名的方法。
方法内部:
初始化:
用User定义一个变量user,作为方法的返回。
用Connection定义一个变量conn,作为连接数据库的变量。
连接数据库:
conn = SysDataSource.getInstance().getConnection();这句代码就是将conn连接到指定的数据库上。
设定命令:
PreparedStatement pstmt = conn.prepareStatement(“select * from user where username = ?”);这个PreparedStatement包含已编译的SQL语句。PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。该语句为每个 IN 参数保留一个问号“?”作为占位符。
接着pstmt.setString(1, username); 进行指定命令参数。即将方法中username这个参数填入问号“?”的那个地方。
写入数据:
ResultSet rs = pstmt.executeQuery(); ResultSet是数据中查询结果返回的一种对象,它是一个集合,而executeQuery()方法则是用于SELECT等查询。
然后把user对象化,并使用set方法将数据填入user中,最后返回。
然后是将所有user数据全部查询的操作:
public List<User> listUser(){ List<User> list = new ArrayList<User> (); Connection conn = null; try { conn = SysDataSource.getInstance().getConnection(); PreparedStatement pstmt = conn.prepareStatement("select * from user"); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ User user = new User(); user.setUsername(rs.getString("username")); user.setPassword(rs.getString("password")); user.setRolename(rs.getString("rolename")); user.setName(rs.getString("name")); list.add(user); } } catch (SQLException e) { e.printStackTrace(); }finally{ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return list; }
需要用到 List< User >,和上面的查询特定用户操作基本一致,只是prepareStatement对象中的SQL语句为select * from user,所以就把所有数据都查询出来,然后通过while(rs.next())将查询到的所有数据读入。
还有插入操作:
public boolean insert(User user){ boolean b = false; Connection conn = null; try { conn = SysDataSource.getInstance().getConnection(); PreparedStatement pstmt = conn.prepareStatement("insert into user(username,password,rolename,name) values(?,?,?,?)"); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword());; pstmt.setString(3, user.getRolename()); pstmt.setString(4, user.getName()); b = pstmt.execute(); } catch (SQLException e) { e.printStackTrace(); }finally{ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return b; }
执行一下PreparedStatement pstmt = conn.prepareStatement(“insert into user(username,password,rolename,name) values(?,?,?,?)”);这个语句,再将插入的数据分别填入 “?”中,接着pstmt.execute()用来执行插入这个操作。
删除操作:
public boolean delete(String username){ boolean delflag = false; Connection conn = null; try { //连接数据库 conn = SysDataSource.getInstance().getConnection(); //设定命令 PreparedStatement pstmt = conn.prepareStatement("delete from user where username = ?"); pstmt.setString(1, username.trim());//指定命令参数 delflag = pstmt.execute();//执行并返回结果 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { if(conn!=null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } return delflag; }
执行一下PreparedStatement pstmt = conn.prepareStatement**(“delete from user where username = ?”);这个语句,再将要删除的用户名填入到“?”中,接着**pstmt.execute()用来执行插入这个操作。
相关文章推荐
- 基础应用:java web三层架构程序实例
- [零基础学JAVA]Java SE应用部分-31.Java IO操作(05)IO操作实例讲解之实现简单MIS 推荐
- java基础--数值的扩容实例应用
- Java操作MySQL应用实例
- Java操作MySQL应用实例
- Java 编程基础,应用与实例
- 基础应用:java web三层架构程序实例(组图)
- Java 编程基础,应用与实例
- 应用Java程序动态创建ODBC数据源的实例
- Java技术回顾之JNDI:JNDI应用实例
- java基础应用之关键字综述
- Java批注的发明起因及代码应用实例
- JAVA基础:漫谈Java程序设计中的接口应用
- 连接mysql的javabean实例+简单分页
- 连接mysql的javabean实例+简单分页
- Java Date应用实例集1
- java基础应用之ArrayList
- JAVA基础的interface与inheritance实例
- [软件发布]:Java的数据库应用实例——汽车销售管理系统(JDBC+MSSQL)
- JAVA基础应用: 处理Java中的日期问题