Java针对数据库增删改查代码

package com.bank.abc;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.mchange.v2.c3p0.ComboPooledDataSource;

//封装银行卡表的数据库操作类

public class CardDAO {

    //添加卡
    public String addCard(String name,String shenfen ,double balance)
    {
        String rnt=null;
        //生成卡号
        String cardid=(int)(Math.random()*1000000)+"";

        //保存数据
        try{
        //1加载驱动
        Class.forName("oracle.jdbc.driver.OracleDriver");

        //2获得连接
        Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","test01","123456");

        //3创建声明
        Statement st=conn.createStatement();
        //4执行语句
        String sql="insert into bank values(‘"+name+"‘,‘"+shenfen+"‘,‘"+cardid+"‘,‘"+balance+"‘)";
        if(st.executeUpdate(sql)>0)
        {
            return cardid;
        }
        //5释放资源
        st.close();
        conn.close();
        }catch(Exception e){
            e.printStackTrace();

        }

        return rnt;
    }
    //修改余额
    //可以完成取款和存款的功能
    public boolean updateBalance(String cardid,double balance)throws Exception
    {
        boolean rtn=false;
        try{
            if(balance<0)
            {
                throw new Exception("余额数据异常");
            }

            //1加载驱动
            Class.forName("oracle.jdbc.driver.OracleDriver");

            //2获得连接
            Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","test01","123456");

            //3创建声明
            Statement st=conn.createStatement();
            //4执行语句
            String sql="update bank set ba_balance=‘"+balance+"‘where ba_card=‘"+cardid+"‘";
            rtn=st.executeUpdate(sql)==1;

            //5释放资源
            st.close();
            conn.close();

            }catch(Exception e){
                e.printStackTrace();

            }
        return rtn;
    }

    //验证登录
    public boolean login(String cardid,String password)
    {
            boolean rtn=false;
            try{
                //1加载驱动
                Class.forName("oracle.jdbc.driver.OracleDriver");

                //2获得连接
                Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","test01","123456");

                //3创建声明
                Statement st=conn.createStatement();
                //4执行语句
                String sql="select ba_card,ba_password from bank where ba_card=‘"+cardid+"‘ba_password=‘"+password+"‘";
                ResultSet rs=st.executeQuery(sql);

                rtn=rs.next();
                //5释放资源
                st.close();
                conn.close();

                }catch(Exception e){
                    e.printStackTrace();

                }
                return rtn;
    }

    //验证登录
    public boolean login1(String cardid,String password)
    {
        boolean rtn=false;

        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");

            Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","test01","123456");
            //带有?占位符的语句
            String sql="select * from bank where ba_card=? and ba_password=?";

            //预编译声明
            //优点:1执行效率高,2避免SQL注入
            PreparedStatement ps=conn.prepareStatement(sql);
            //替换占位符
            ps.setString(1, cardid);
            ps.setString(2, password);

            ResultSet rs=ps.executeQuery();
            //如果有数据就验证通过
            rtn=rs.next();

            //数据库元数据
            DatabaseMetaData dm= conn.getMetaData();
            System.out.println("getURL="+dm.getURL());
            System.out.println("getUserName="+dm.getUserName());
            System.out.println("getDatabaseProductName="+dm.getDatabaseProductName());

            //结果集的元数据
            ResultSetMetaData rsd=rs.getMetaData();
            System.out.println("getColumnCount="+rsd.getColumnCount());
            System.out.println("getColumnName"+rsd.getColumnName(3));

            rs.close();
            ps.close();
            conn.close();
        }catch(Exception e)
        {
            e.printStackTrace();
        }

        return rtn;
    }

    //转账
    public boolean zhuanzhang(String cardid_out ,String cardid_in ,double money)
    {
        boolean rtn=false;
        Connection conn=null;
        PreparedStatement ps=null;
        //
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");

            conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","test01","123456");

            //连接自动提交默认为true
            //1.设置连接自动提交为false
            conn.setAutoCommit(false);

            //转出账户

            String sql="update bank set ba_balance=ba_balance-"+money+"where ba_card=?";

            ps=conn.prepareStatement(sql);

            ps.setString(1, cardid_out);

            rtn=ps.executeUpdate()==1;

            //模拟发生异常
            if(rtn)
            {
            throw new RuntimeException("网络中断");
            }
            //转入账户
             sql="update bank set ba_balance=ba_balance+"+money+"where ba_card=?";

            ps=conn.prepareStatement(sql);

            ps.setString(1, cardid_in);

            rtn=ps.executeUpdate()==1;

            //2提交事务
            conn.commit();

        } catch (Exception e) {
            // 3.回滚事务
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        }
        finally
        {
            try {
                ps.close();
                conn.close();
            } catch (SQLException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }

        }

        return rtn;
    }

    //测试连接池
    public void testC3P0()
    {
        //连接池的形式是DataSource
        //构建连接池对象
        ComboPooledDataSource cp=new ComboPooledDataSource();

        //配置连接池
        try {
            //设置驱动
            cp.setDriverClass("oracle.jdbc.driver.OracleDriver");
            //设置url
            cp.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
            //设置用户
            cp.setUser("test01");
            //设置密码
            cp.setPassword("123456");
            //设置连接最小数量
            cp.setMinPoolSize(5);
            //设置连接最大数量
            cp.setMaxPoolSize(20);
            //设置初始连接数量
            cp.setInitialPoolSize(5);

            Connection conn=cp.getConnection();

            String cardid=(int)(Math.random()*1000000)+"";

            String sql="insert into bank(ba_name,ba_shenfen,ba_card,ba_balance,ba_password)"+
            "values(?,?,?,?,?)";

            PreparedStatement ps=conn.prepareStatement(sql);

            ps.setString(1, "张三");
            ps.setString(2, "123456789012345678");
            ps.setString(3, cardid);
            ps.setDouble(4, 100);
            ps.setString(5, "123456");

            ps.executeUpdate();

            System.out.println("添加成功");

            ps.close();
            conn.close();

        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    //测试连接池
    //通过配置文件,构建连接池
    //连接池的形式是DataSource
    //构建连接池对象
    ComboPooledDataSource cp=new ComboPooledDataSource("helloc3p0");

    public void test1C3P0()
    {

        //配置连接池
        try {

            Connection conn=cp.getConnection();

            String cardid=(int)(Math.random()*1000000)+"";

            String sql="insert into bank(ba_name,ba_shenfen,ba_card,ba_balance,ba_password)"+
            "values(?,?,?,?,?)";

            PreparedStatement ps=conn.prepareStatement(sql);

            ps.setString(1, "李四");
            ps.setString(2, "123456789012345678");
            ps.setString(3, cardid);
            ps.setDouble(4, 100);
            ps.setString(5, "123456");

            ps.executeUpdate();

            System.out.println("添加成功");

            ps.close();
            conn.close();

        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }

    //查询账户,获取账户信息
    //返回实体类装载的数据
    public bank getcard(String cardid)
    {
        bank ba=null;
        try {
            Connection conn=cp.getConnection();

            String sql="select * from bank where ba_card=?";

            PreparedStatement ps=conn.prepareStatement(sql);

            ps.setString(1, cardid);

            ResultSet rs=ps.executeQuery();

            if(rs.next())
            {
                //使用实体类装载数据
                ba=new bank();
                ba.setBa_card(rs.getString("ba_card"));
                ba.setBa_name(rs.getString("ba_name"));
                ba.setBa_shenfen(rs.getString("ba_shenfen"));
                ba.setBa_balance(rs.getDouble("ba_balance"));
                ba.setBa_password(rs.getString("ba_password"));

                rs.close();
                ps.close();
                conn.close();
            }
        } catch (SQLException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

        return ba;

    }

    //查询所有记录
    public List<bank> getAll()
    {
        List<bank> li=new ArrayList<>();
        try {
            Connection conn=cp.getConnection();

            Statement st=conn.createStatement();

            ResultSet rs=st.executeQuery("select * from bank");

            while(rs.next())
            {
                bank ba=new bank();
                ba.setBa_card(rs.getString("ba_card"));
                ba.setBa_name(rs.getString("ba_name"));
                ba.setBa_shenfen(rs.getString("ba_shenfen"));
                ba.setBa_balance(rs.getDouble("ba_balance"));
                ba.setBa_password(rs.getString("ba_password"));

                li.add(ba);
            }

            rs.close();
            st.close();
            conn.close();

        } catch (SQLException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
        return li;
    }

}

测试:

package com.bank.abc;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Test;

public class testatm {

    @Test
    public void testInsert() {

        //测试发卡
        CardDAO cd=new CardDAO();
        String cardid=cd.addCard("李凯", "220521199202025439", 0);
        if(cardid !=null)
        {
            System.out.println("卡号"+cardid);
        }
        else
        {
            System.out.println("发卡失败");
        }
    }

    @Test
    public void testInsert1() {
        CardDAO cd=new CardDAO();
        try{
        if(cd.updateBalance("064532", 100))
        {
            System.out.println("存款成功");
        }else{
            System.out.println("存款失败");
        }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    @Test
    public void testInsert2() {
        CardDAO cd=new CardDAO();
        try{
        if(cd.login(" 123453‘ or 1=1--", "321312"))
        {
            System.out.println("");
        }

        }catch(Exception e){
            e.printStackTrace();
        }
    }
    @Test
    public void testInsert3() {
        CardDAO cd=new CardDAO();
        try{
        if(cd.login1("362569", "123456"))
        {
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }

        }catch(Exception e){
            e.printStackTrace();
        }
    }
    //测试转账

    @Test
    public void testInsert4() {
        CardDAO cd=new CardDAO();
        try{
        if(cd.zhuanzhang("949806", "362569",5000))
        {
            System.out.println("转账成功");
        }else{
            System.out.println("转账失败");
        }

        }catch(Exception e){
            e.printStackTrace();
        }
    }

    //测试连接池
    @Test
    public void testInsert5() {
        CardDAO cd=new CardDAO();
        cd.testC3P0();
    }
    //测试连接池
    @Test
    public void testInsert6() {
        CardDAO cd=new CardDAO();
        cd.test1C3P0();
    }

    //测试获取卡信息
    @Test
    public void testInsert7() {

        CardDAO cd=new CardDAO();
        bank ba=cd.getcard("362569");
        System.out.println(ba);
    }

    //测试获取所有卡信息
        @Test
        public void testInsert8() {

            CardDAO cd=new CardDAO();
            List<bank> li=cd.getAll();
            for(bank ba:li)
            {
                System.out.println(ba);
            }

        }
}
时间: 2024-08-27 16:38:26

Java针对数据库增删改查代码的相关文章

java DMO及增删改查代码的自动生成

在web开发过程中,尤其是后台管理系统的开发中,少不了增删改成的基础操作,原来我自己的做法是一份一份的拷贝粘贴,然后修改其中的不同,然而这样既枯燥无味又浪费了大量的时间,所以根据自己项目结构的特点写了一个自动生成结构代码的工具jar包,可以根据数据库表直接生成相应数据库模型对象(DMO)以及对表的增删改查代码. 之前我考虑过多种自动生成代码的提供方式,比如web的方式,通过在页面文本框里面输入各种参数,比如模板文件地址,生成文件地址,数据库名,数据库用户名和密码等,点击生成按钮就可以生成源代码文

数据库增删改查代码,登录和注册

封装字段,定义成员变量 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace data { public class cangkudata { private string cno; public string Cno { get { return cno; } set { cno = value; } } private string city; publi

java操作数据库增删改查的小工具--TxQueryRunner

在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样的,特点是支持事务,使用时需要导入几个jar包,分别是 : 这个工具类的优点基本上就是阿帕奇出的DBUtils框架里边所具有的特点,极大简化操作者的代码量,底层使用c3p0连接池,可以方便的吧数据库查询出来的结果映射到JavaBean,List,Map等中,以下是笔记及代码: import java

Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面进行描述.参考前文: Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中 Java+MyE

Java连接MySQL数据库增删改查通用方法

Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的. 我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了  数据库--MySQL-->Java篇 接下来我给大家讲讲如何将

【Android】Sqlite数据库增删改查

Android系统内置一个Sqlite数据库,如果app需要使用Sqlite数据库数据库存储数据,Android会为此app生成一个.db文件.这个数据库在data/data/<package_name>/databases里面,其中<package_name>为该安卓app的工程包名,这个目录必须root后才能看到.在Windows,单机的应用程序,存储数据,基本放到一个文件里面,正如游戏的存档,基本就是把当前的游戏状态存到一个用户很难找到的文件里面.每次存档读档就是一个从这个存

最简单的jsp+servlet的增删改查代码

package ceet.ac.cn.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ceet.ac.cn.model.Admin; public class AdminDao {

jdbc之实现数据库增删改查的最基本操作

关于JDBC 之前很早学过jdbc了,可是学的不够扎实,连接MySQL总是出问题,于是这两天又把jdbc好好学了一遍.  定义:JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序. JDBC库中所包含的API通常与数据库使用于: 连接到数据库 创建SQ

mybatis--实现数据库增删改查

首先,创建一个数据库my,并在数据库中插入一张表user,然后在user表中插入一行数据,代码如下: create database my; use my; create table user( id int(10) auto_increment, name varchar(64), level varchar(256), phone varchar(256), primary key(id) ); insert into user(id,name,level,phone) values(1,'