Mysql+JDBC

import java.io.*;
import java.sql.*;
import java.util.*;
/**
 * 测试Java程序利用JDBC API访问oracle数据库
 * @author teacher
 *
 */
public class MyJDBCDemo {
    private static String url ;
    private static String dbUser ;
    private static String dbPassword ;
    /**
     * 读入filename指定的文件,并解析,把键值对中的数据取出
     * 给全局变量url, dbUser, dbPassword赋值
     * @param filename : 传入的文件名
     */
    public static void getParam(String filename){
        Properties propes = new Properties();
        
        File file = new File(filename);
        try {
            FileInputStream fis = new FileInputStream(file);
            //加载输入流指定的文件,数据放入键值对对象。
            propes.load(fis);
            //获取文件中url(key)对应的value,给全局变量赋值
            url = propes.getProperty("url");
            dbUser = propes.getProperty("dbUser");
            dbPassword = propes.getProperty("dbPassword");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 连接数据库,获取emp表的数据并打印
     */
    public static void getEmpData(){
        Connection conn = null;//定义连接对象
        String sql = "select * from from emp";//合法的sql语句,但是没有分号
        try {
            //利用DriverManager给连接对象赋值,
            //需要三个参数:
            //连接字符串;数据库的用户名;密码
            conn = DriverManager
                .getConnection(url,dbUser,dbPassword);//多态
            Statement stmt = conn.createStatement();//多态
           //传递sql语句到数据库中,并返回结果集
            ResultSet rs = stmt.executeQuery(sql);
            //指针的初始位置是第一行之前(BeforeFirst)。
            //next()方法的功能是指针下移一行,并返回boolean值
            //如果下移一行后,指针指向的这行有数据,返回true,否则返回false
            while(rs.next()){
                //每个循环体,指针指向一行
                //id/name/age是列名,
                //number类型用getInt()取值
                //varchar2/char类型用getString()取值
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.println(id + "," + name + "," + age);
            }
            //关闭资源
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        getParam("src/db_oracle.properties");
        //getEmpData();
        //boolean flag = login(1001,"1234");
        //System.out.println(flag ? "登录成功" : "登录失败");
        //boolean flag1 = insertUser(1030,"abcd","zhangwj","1234");
        //System.out.println(flag1 ? "新增成功" : "新增失败");
       //boolean flag2 = updateUser(1988,"lisi","5678");
       //System.out.println(flag2 ? "更新成功" : "更新失败");
        boolean flag3 = deleteUser(1020);
           System.out.println(flag3 ? "删除成功" : "删除失败");
    }    
/**
 * 实现判断id和pwd是否是合法用户
 * select * from user_ning
    where id = 1001 and password = '1234';
 * @param id:用户id
 * @param pwd: 用户password
 * @return  如果是合法用户,返回true,否则返回false
 */
    public static boolean login(int id, String pwd){
        boolean flag = false;
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String sql = "select * from user_ning " +
                " where id =" + id + " and password = '"+pwd+"'";
        try {
            conn = DriverManager
                .getConnection(url, dbUser, dbPassword);
            stmt = conn.createStatement();
            //如果id是pk,只能有一条记录或者没有。
            rs = stmt.executeQuery(sql);
            if (rs.next()){
                flag = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            try{
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return flag;
    }

    /**
     * 新增用户
     * insert into user_ning values(1003,'abcd',
     'zhangwj','12345678');
     * @param id 用户编码
     * @param pwd 用户密码
     * @param name 用户姓名
     * @param phone 用户电话
     * @return 如果新增成功,返回true, 否则返回false
     */
    public static boolean insertUser(
            int id, String pwd, String name, String phone){
        boolean flag = false;
        Connection conn = null;
        PreparedStatement stmt = null;
        String sql = " insert into user_ning values(?,?,?,?)";
        try{
            conn = DriverManager
                .getConnection(url,dbUser,dbPassword);
            //stmt = conn.createStatement();
            //stmt.executeQuery(sql);
            stmt = conn.prepareStatement(sql);//预处理的语句对象
            stmt.setInt(1, id);//把id填充第1个问号
            stmt.setString(2, pwd);//用pwd填充第2个问号
            stmt.setString(3, name);
            stmt.setString(4, phone);
            int n = stmt.executeUpdate();//执行
            if (n == 1) flag = true;
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return flag;
    }
    /**
     * 更新指定用户的姓名和电话
     * @param id 指定的用户
     * @param name 更新后的姓名
     * @param phone 更新后的电话
     * @return 如果更新成功,返回true,否则返回false
     */
    public static boolean updateUser(
              int id, String name, String phone){
               //update user_ning set name = 'zhangsan',
               //phone = '5678' where id = 1001;
        boolean flag = false;
        String sql = "update user_ning set name = ?, " +
                "phone = ? where id = ?";
        Connection conn = null;
        PreparedStatement stmt = null;
        try{
            conn = DriverManager.getConnection(url,dbUser,dbPassword);
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, name);
            stmt.setString(2, phone);
            stmt.setInt(3, id);
            int count = stmt.executeUpdate();//执行
            if (count == 1){
                flag = true;
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if (conn != null) conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return flag;
    }
    
    /**
     * 删除指定用户
     * @param id 指定的用户
     * @return 如果删除成功,返回true,否则返回false
     */
    public static boolean deleteUser(int id){
               //delete user_ning where id = 1988
        boolean flag = false;
        String sql = "delete user_ning where id = ?";
        Connection conn = null;
        PreparedStatement stmt = null;
        try{
            conn = DriverManager.getConnection(url,dbUser,dbPassword);
            stmt = conn.prepareStatement(sql);
            stmt.setInt(1, id);
            int count = stmt.executeUpdate();//执行
            System.out.println(count);
            if (count == 1){
                flag = true;
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if (conn != null) conn.close();
            }catch(Exception e){
                e.printStackTrace();
            }
        }
        return flag;
    }
}
JavaSE是Java平台的一个版本,它提供了一系列的API和工具,可以用于开发各种类型的应用程序。MySQL是一个开源关系型数据库管理系统,它提供了高效、稳定和可靠的数据存储和检索功能。JDBC是Java数据库连接技术,它允许通过Java代码连接和操作关系型数据库。 在一个JavaSE项目中,我们可以使用JDBC来连接MySQL数据库,并完成与数据库的交互。首先,我们需要导入JDBC相关的jar包,例如MySQL Connector/J,这个jar包提供了连接MySQL数据库所需的驱动程序。我们可以从MySQL官网下载并导入这个jar包。 接下来,在Java代码中,我们通过加载JDBC驱动程序,使用合适的URL、用户名和密码连接到MySQL数据库。这个URL包含了数据库的IP地址、端口号和数据库名称等信息。一旦连接成功,我们可以使用JDBC提供的API执行SQL语句,例如插入、更新和删除数据,或者查询数据库中的数据。 在JDBC项目中,我们可以使用PreparedStatement对象来预编译SQL语句,以提高执行效率和安全性。通过设置参数,我们可以动态地构建和执行SQL语句,避免了SQL注入等安全问题。 此外,我们还可以使用JDBC的事务操作来确保数据库的一致性和完整性。通过开始事务、执行SQL语句和提交或回滚事务,我们可以在多个数据库操作之间实现原子性和隔离性。 在开发JDBC项目时,我们还要注意资源的管理和释放,包括数据库连接、Statement和ResultSet等对象的关闭,以避免内存泄漏和性能问题。 总的来说,基于JavaSE的MySQL JDBC项目可以通过JDBC技术与MySQL数据库进行连接和交互。开发者可以使用JDBC提供的API执行各种数据库操作,并通过事务来确保数据的一致性。在项目开发过程中要注意合理管理和释放资源,以提高项目的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值