mysql与myeclipse连接

来源:互联网 发布:淘宝助理苹果电脑版 编辑:程序博客网 时间:2024/05/17 02:53


工程中的包

1.包的命名规则
com.公司名.(项目名.具体模块的名称)实现分类的名称
1.po包:存放的是javabean类,每个Javabean类对应数据库中一张表。类名和表名一致
2.dao包:存放的是操作数据的类,即对数据库中的表进行增删查改操作的类,每个dao类对应数据库中的一张表。类
名为一表名+Dao
3.util包:存放的是公用的类和常量类
4.test包:存放的是测试类

javabean类:储存数据的类。只包括属性、构造器、setter和getter方法

数据库客服端操作数据库的步骤:
1.连接数据库(ip地址,端口号,用户名,密码,数据库名)
2.打开发送和执行sql语句的窗口
3.发送和执行sql语句
4.根据返回结果,判断是否正确操作了数据库
5.关闭打开的所有的东西

JDBC操作数据库的步骤:
1.连接到数据库:
(1)加载数据库驱动:会抛出一个ClassNotFoundException异常
mysql:Class.forName("com.mysql.jdbc.Driver")
oracle:Class.forName("");

(2)利用驱动和三个参数(url,user,password)获得连接:会抛出一个SQLException异常
java.sql.Connection con = java.sql.DriverManager.getConnection(url,user,password);
mysql:String url = "jdbc:mysql://127.0.0.1:端口号/databaseName".
oracle:String url = "";

3.通过连接获得操作数据库的对象:会抛出一个SQLException异常
java.sql.Statement st = con.createStatement();

4.使用java.sql.Statement对象执行sql语句:会抛出一个SQLException异常
执行更新sql语句:int rows = st.executeUpdate(sql);
执行查询sql语句:java.sql.ResultSet re = st.executeQuery(sql);

5.根据返回的rows/re,判断SQL语句是否正确执行:
rows!=0 SQL语句正常执行
re.next()==true  表示查出了字表

6.关闭,先打开后关闭
关闭re:re.close():会抛出一个SQLException异常
关闭st:st.close():会抛出一个SQLException异常
关闭con:con.close()会抛出一个SQLException异常

第一个jar 包:数据库的驱动
Web工程的jar包都是放在WebRoot/WEB-INF/lib文件夹里(放在里面,自动导入)

几个接口:
java.sql.Connection是一个接口
java.sql.Statement是一个接口
java.sql.ResultSet是一个接口
java.sql.PreparedStatement是一个接口

数据库连接配置文件:database.properties只加载一次,放在src文件夹下面
properties文件以键(name)值(value)方式保存数据
从properties文件中解析出value值:
InputStream is = null;
is = DBConnectionUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties p = new Properties();
p.load(is);
String value = p.getProperty("name");

java.sql.Statement和java.sql.PreparedStatement比较
代码比较
1.SQL的写法:
Satement:String sql = "selete id from user where email =' "+email+" ' ";
PreparedStatement:String sql = "selete id from user where email = ?"
2.st/ps的获取:
Statement:st = con.createStatement();
PreparedStatement:ps = con.preparedStatement(sql);
3.参数的设置:
Statement:在SQL中给出
PreparedStatement:ps.setType(1,value);  ps.setType(2,value);
4.执行SQL:
Statement:int rows  =  st.executeUpdate(sql);      re = st.executeQuery(sql);
PreparedStatement:int rows = ps.executeUpdate();    re = ps.executeQuery();

PreparedStatement的优势:
1.防止SQL的注入,提高安全性
2.对参数实现类型的自动转换,代码的可读性,可维护性提高
3,.对于批处理:PreparedStatement效率更高一些(oracle明显,MySQL区别不大)


package com.yy.jdbc.dao;

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

import com.yy.jdbc.po.User;
import com.yy.jdbc.util.DBconnectionUitl;

/**
 * @author kouyang
 *
 */
public class UserDao {
 //单例模式
 public UserDao(){
  
 }
 private static UserDao userDao = new UserDao();
 public static UserDao getInstance(){
  return userDao;
 }
 
 /**
  * @param user
  *
  * @return true保存成功,false保存失败
  */
 public boolean saveUser(User user){
  boolean flag = false;
  
  Connection conn = null;
  Statement st = null;
  String sql = "";
  try {
   //获取连接
   conn = DBconnectionUitl.getConnection();
   //产生执行sql语句的对象
   st = conn.createStatement();
   
   //拼凑sql语句
   sql = "insert into user(username,sex,password) values ('"
    + user.getUsername() + "',"
    + user.getSex() + ",'"
    + user.getPassword() + "'"
    + ")";
   System.out.println(sql);
   
   //执行sql语句
   int rows = st.executeUpdate(sql);
   if(rows != 0)
    flag = true;
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBconnectionUitl.closeAll(null, st, conn);
  }
  return flag;
 }
 
 /**
  * 通过userId删除user对象
  * @param userId
  * @return
  */
 public boolean deleteUserByUserId(int userId){
  boolean flag = false;
  
  Connection conn = null;
  Statement st = null;
  String sql = "delete from user where userId = " + userId;
  
  try {
   conn = DBconnectionUitl.getConnection();
   st = conn.createStatement();
   int rows = st.executeUpdate(sql);
   if(rows != 0)
    flag = true;
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBconnectionUitl.closeAll(null, st, conn);
  }
  return flag;
 }
 
 /**
  * 通过username修改user对象
  * @param username
  * @return
  */
 public boolean updateUserByUsername(String username,String password){
 boolean flag = false;
  
  Connection conn = null;
  Statement st = null;
  String sql = "update user set password='"+password+"' where username = '" + username+"'";
  System.out.println(sql);
  try {
   conn = DBconnectionUitl.getConnection();
   st = conn.createStatement();
   int rows = st.executeUpdate(sql);
   if(rows != 0)
    flag = true;
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBconnectionUitl.closeAll(null, st, conn);
  }
  return flag;
 }
 
 public List<User> getAllUserList(){
  List<User> userList = new ArrayList<User>();
  Connection conn = null;
  Statement st = null;
  
  String sql = "select * from user";
  ResultSet rs = null;
  try {
   conn = DBconnectionUitl.getConnection();
   st = conn.createStatement();
   rs = st.executeQuery(sql);
   
   while(rs.next()){
    User user = new User();
    user.setUserId(rs.getInt("userId"));
    user.setUsername(rs.getString("username"));
    user.setSex(rs.getInt("sex"));
    user.setPassword(rs.getString("password"));
    user.setFlag(rs.getInt("flag"));
    userList.add(user);
   }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBconnectionUitl.closeAll(rs, st, conn);
  }
  return userList;
 }
 
 public List<User> getUserListPage(int start,int pageNo){
  List<User> userList = new ArrayList<User>();
  
  Connection conn = null;
  PreparedStatement ps = null;
  
  ResultSet rs = null;
  String sql = "select * from user order by userId asc limit ?,?";
  try {
   conn = DBconnectionUitl.getConnection();
   ps = conn.prepareStatement(sql);
   ps.setInt(1, start);
   ps.setInt(2, pageNo);
   
   rs = ps.executeQuery();
   while(rs.next()){
    User user = new User();
    user.setUserId(rs.getInt("userId"));
    user.setUsername(rs.getString("username"));
    user.setSex(rs.getInt("sex"));
    user.setPassword(rs.getString("password"));
    user.setFlag(rs.getInt("flag"));
    userList.add(user);
   }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   DBconnectionUitl.closeAll(rs, ps, conn);
  }
  
  
  return userList;
 }
 
}



package com.yy.jdbc.po;

public class User {
 private int userId;
 private String username;
 private int sex;
 private String password;
 private int flag;
 
 public int getUserId() {
  return userId;
 }
 public void setUserId(int userId) {
  this.userId = userId;
 }
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public int getSex() {
  return sex;
 }
 public void setSex(int sex) {
  this.sex = sex;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public int getFlag() {
  return flag;
 }
 public void setFlag(int flag) {
  this.flag = flag;
 }
}