• 连接数据库,和数据增删改


    连接数据库

    package com.hanqi.util;
    //这种util包下面放我们用到的工具类
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class dbHelper {
    	private static final String USERNAME = "test";
    								//常量全部大写
    	private static final String PASSWORD = "test";
    	private static final String URL 
    	= "jdbc:oracle:thin:@localhost:1521:orcl";
    	private static final String DRIVERCLASSNAME 
    	= "oracle.jdbc.OracleDriver";
    	
    	public static  Connection getConnection() {
    		//方法定义成静态的,可以通过类名直接点出来
    		Connection conn = null;
    		try {
    			Class.forName(DRIVERCLASSNAME);
    			//大写calss表示类(和反射有关系),小写class表示关键字..
    			//forName表示加载项目里面的某个类.也不需要取什么返回值,只需要加载一下就可以了
    			conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
    			//jdbc里面还有一个 驱动管理类,有一个方法(三个方法的重载)直接把这个连接获取到
    			//这个方法有个返回值,所以写一个返回值,在上面定义 一个
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    	//写一个主方法测试一下是否连接成功了
    	public static void main(String[] args) {
    		Connection c = getConnection();
    		System.out.println(c);
    		destroy(c,null,null);
    		//当显示 oracle.jdbc.driver.T4CConnection@4629104a 样式
    		//就表明数据库连接成功了
    	}
    	
    	public static void destroy (Connection conn, Statement sm,ResultSet rs) {
    		if (conn != null) {
    			try {
    				conn.close();
    				//如果它不是空的,就把它关了
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			conn = null;
    			//如果没关,就把空值赋给 conn,让垃圾回收机制去收回
    		}
    		if (sm != null) {
    			try {
    				sm.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			sm = null;
    		}
    		if (rs != null) {
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			rs = null;
    		}
    	}
    }
    

      增

    package com.hanqi.dal;
    //在使用jdbc做项目的公司,通常dal这个包作为数据库的连接类,跟数据库有关的东西都放到这个包下.
    //以后学框架后会改用dao包
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import com.hanqi.util.dbHelper;
    //这个类 是用于增删改查
    //要添加一个数据,就要先打开那个表
    public class DataBaseMethodDal {
    	//两个成员对象
    	private Connection conn;
    	private Statement sm;
    	
    	//构建一个方法往里面添加数据
    	public int insertAppuser() {
    		//这个方法名 就是查找这个表de 意思
    		init();
    		//调用下面初始化的方法;
    		String sql =
    				"insert into student "+
    		"values(sq_test.nextval,'混蛋','stu-1063','2',sysdate,'ADV-609','1')";
    		//定义sql语句
    		int num = -1;
    		 try {
    			num = sm.executeUpdate(sql);
    			//executeUpdate  是用来调用增删改的,把上面想要增加的语句放上
    				//如果执行成功 返回的是一个整数型,返回的是影响的行数 1,不成功返回-1
    			//executeQuery   是用来调用查询语句的
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		 return num ;
    	}
    	//初始化,先初识化两个成员对象
    	public void init() {
    		conn = dbHelper.getConnection();
    		//先去获取到数据库的连接对象
    		try {
    			sm = conn.createStatement();
    			//由这个连接对象可以获取到执行数据库语句的一个对象
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

      

    package com.hanqi.test;
    
    import com.hanqi.dal.DataBaseMethodDal;
    
    public class TestDemo {
    
    	public static void main(String[] args) {
    		DataBaseMethodDal dbmd = new DataBaseMethodDal();
    		int i = dbmd.insertAppuser();
    		//调用实例化类里面插入数据的那个方法就行了
    		System.out.println(i);
    	}
    }
    

      批量添加

    package com.hanqi.dal;
    //在使用jdbc做项目的公司,通常dal这个包作为数据库的连接类,跟数据库有关的东西都放到这个包下.
    //以后学框架后会改用dao包
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.List;
    
    import com.hanqi.model.AppUser;
    import com.hanqi.util.dbHelper;
    //这个类 是用于增删改查
    //要添加一个数据,就要先打开那个表
    public class DataBaseMethodDal {
    	//两个成员对象
    	private Connection conn;
    	private Statement sm;
    	private PreparedStatement ps;
    //批量添加
    	public int[] insertAppuser(List<AppUser> list) {
    		init();
    		int[] num = null;
    		try {
    		for(AppUser user :list) {
    			String sql =
    					"insert into appuser "
    					+"values(sq_test.nextval,'"
    					+user.getName()+"','"
    					+user.getCode()+"','"
    					+user.getSex()+"',to_date('"
    					+user.getBirthday2()+"','yyyy-MM-dd'))";
    		
    				sm.addBatch(sql);
    				//批量添加
    		}
    		 num = sm.executeBatch();
    		// 批量提交
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		 return num;
    	}
    
    public void init() {
    		conn = dbHelper.getConnection();
    		//先去获取到数据库的连接对象
    		try {
    			sm = conn.createStatement();
    			//由这个连接对象可以获取到执行数据库语句的一个对象
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    

      

    import com.hanqi.dal.DataBaseMethodDal;
    import com.hanqi.model.AppUser;
    
    public class TestDemo {
    
    	public static void main(String[] args) {
    	    	DataBaseMethodDal dbmd = new DataBaseMethodDal();
    	        List<AppUser> list = new ArrayList<AppUser>();
    		AppUser user1 = new AppUser("小红4","ss-14",1,new Date());
    		AppUser user2 = new AppUser("小红5","ss-15",2,new Date());
    		AppUser user3 = new AppUser("小红6","ss-16",1,new Date());
    		list.add(user1);
    		list.add(user2);
    		list.add(user3);
    		int[] arr = dbmd.insertAppuser(list);
    		//将一个数组转换成字符串打印出来
    		System.out.println(Arrays.toString(arr));    
    

      批量添加(重点这个)

    package com.hanqi.dal;
    //在使用jdbc做项目的公司,通常dal这个包作为数据库的连接类,跟数据库有关的东西都放到这个包下.
    //以后学框架后会改用dao包
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.List;
    
    import com.hanqi.model.AppUser;
    import com.hanqi.util.dbHelper;
    //这个类 是用于增删改查
    //要添加一个数据,就要先打开那个表
    public class DataBaseMethodDal {
    	//两个成员对象
    	private Connection conn;
    	private Statement sm;
    	private PreparedStatement ps;
    
    //批量添加方法2着重记忆
    	public int[] insertAppuserByprepared(List<AppUser> list) {
    		//调用这个方法他的返回值是-2,代表添加成功啦
    		String sql =
    				"insert into appuser "
    				+"values(sq_test.nextval,?,?,?,?)";
    		init(sql);
    		int[] num = null;
    		try {
    		for(AppUser user :list) {
    			/*java.sql.Date extends java.util.Date */
    			ps.setString(1, user.getName());
    			ps.setString(2, user.getCode());
    			ps.setInt(3, user.getSex());
    			ps.setDate(4, new java.sql.Date(user.getBirthday().getTime()));
    			//java.sql.Date只记录日期没有时间   java.util.Date里带着时间和日期
    			//timeStamp 精确到毫秒  time只有时间没有日期
    			ps.addBatch();
    			//把上面的怼进去
    		}
    		 num = ps.executeBatch();
    		 //然后 执行!
    		// 批量提交
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		 return num;
    	}
    	
    
    public void init(String sql) {
    		conn = dbHelper.getConnection();
    		try {
    			ps = conn.prepareStatement(sql);
    			//返回用于执行sql语句的一个对象
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

      

    package com.hanqi.test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.List;
    
    import com.hanqi.dal.DataBaseMethodDal;
    import com.hanqi.model.AppUser;
    
    public class TestDemo {
    
    	public static void main(String[] args) {
    		DataBaseMethodDal dbmd = new DataBaseMethodDal();
    		//下面是添加数据
    		//AppUser user = new AppUser("小红","ss-13",1,new Date());
    		//int i = dbmd.insertAppuser(user);
    		//下面是批量添加数据
    		List<AppUser> list = new ArrayList<AppUser>();
    		AppUser user1 = new AppUser("小红4","ss-14",1,new Date());
    		AppUser user2 = new AppUser("小红5","ss-15",2,new Date());
    		AppUser user3 = new AppUser("小红6","ss-16",1,new Date());
    		list.add(user1);
    		list.add(user2);
    		list.add(user3);
    		int[] arr = dbmd.insertAppuserByprepared(list);
    		//将一个数组转换成字符串打印出来
    		System.out.println(Arrays.toString(arr));
    }
    

      修改数据

    public int updateappuser(String username) {
    		String sql = "update appuser a set a.code ='ss-10'"
    				+"where a.name = ?";
    		//sql注入攻击
    		//username += "or 1=1";会永远成立
    		init(sql);
    		int a = -1;
    		try {
    			ps.setString(1, username);
    			//索引是从1开始的
    			a =ps.executeUpdate();
    			//修改数据,返回影响的行数
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return a;
    	}
    
    public void init(String sql) {
    		conn = dbHelper.getConnection();
    		try {
    			ps = conn.prepareStatement(sql);
    			//返回用于执行sql语句的一个对象
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

      

    package com.hanqi.test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.List;
    
    import com.hanqi.dal.DataBaseMethodDal;
    import com.hanqi.model.AppUser;
    
    public class TestDemo {
    
    	public static void main(String[] args) {
    		DataBaseMethodDal dbmd = new DataBaseMethodDal();
    //用占位符修改数据
    		//int i2 = dbmd.updateappuser("hanqi");
                System.out.println(i4);        
    

       删除数据

    //删除数据
    	public int deleteappuser(Integer id) {
    		String sql = "delete appuser a where a.id = ?";
    		init(sql);
    		int num = -1;
    		try {
    			ps.setInt(1, id);
    			num = ps.executeUpdate();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return num;
    	}
    	//批量删除
    	public int deleteappuser(String code) {
    		String sql = "delete appuser a where a.code = ?";
    		//加入这个表里的code这一列有几个重复的
    		init(sql);
    		int num = -1;
    		try {
    			ps.setString(1, code);
    			num = ps.executeUpdate();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return num;
    	}
    
    public void init(String sql) {
    		conn = dbHelper.getConnection();
    		try {
    			ps = conn.prepareStatement(sql);
    			//返回用于执行sql语句的一个对象
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    

      

    package com.hanqi.test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Date;
    import java.util.List;
    
    import com.hanqi.dal.DataBaseMethodDal;
    import com.hanqi.model.AppUser;
    
    public class TestDemo {
    
    	public static void main(String[] args) {
    		DataBaseMethodDal dbmd = new DataBaseMethodDal();
    //删除数据
    		//int i3= dbmd.deleteappuser(52);
    		//批量删除	
    		//int i4= dbmd.deleteappuser("ss-11");
    		//System.out.println(i4);
    

      

     

  • 相关阅读:
    C# is运算符
    C# unchecked运算符
    C#程序设计入门经典之C#的基本语法
    C# 数据类型
    C# 变量与常量
    C# 操作符与表达式
    关于TeeChart使用我会持续更新
    oracle查看表中否存在某字段,数据库是否存在某张表
    tchart
    ultragrid
  • 原文地址:https://www.cnblogs.com/ziyanxiaozhu/p/8099336.html
Copyright © 2020-2023  润新知