博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连接数据库,和数据增删改
阅读量:4460 次
发布时间:2019-06-08

本文共 8907 字,大约阅读时间需要 29 分钟。

 

连接数据库

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
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
list = new ArrayList
(); 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
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
list = new ArrayList
(); 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);

  

 

 

转载于:https://www.cnblogs.com/ziyanxiaozhu/p/8099336.html

你可能感兴趣的文章
教你50招提升ASP.NET性能(二十二):利用.NET 4.5异步结构
查看>>
lua连续随机数
查看>>
checkstyle使用介绍
查看>>
history.js 一个无刷新就可改变浏览器栏地址的插件(不依赖jquery)
查看>>
会了这十种Python优雅的写法,让你工作效率翻十倍,一人顶十人用!
查看>>
二维码图片生成
查看>>
在做操作系统实验的一些疑问
查看>>
Log4J日志配置详解
查看>>
NameNode 与 SecondaryNameNode 的工作机制
查看>>
Code obfuscation
查看>>
大厂资深面试官 带你破解Android高级面试
查看>>
node.js系列(实例):原生node.js实现接收前台post请求提交数据
查看>>
SignalR主动通知订阅者示例
查看>>
golang的表格驱动测试
查看>>
用python实现矩阵转置
查看>>
linux 小技巧(磁盘空间搜索)
查看>>
iOS开发——捕获崩溃信息
查看>>
(for 循环)编程找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
查看>>
tomcat使用spring-loaded实现应用热部署
查看>>
boost1.53中的lock-free
查看>>