连接数据库

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);

  

 

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

连接数据库,和数据增删改相关推荐

  1. 【Mybatis】学习笔记01:连接数据库,实现增删改

    需要数据库SQL的请跳转到文末 哔哩哔哩 萌狼蓝天[转载资料][尚硅谷][MyBatis]2022版Mybatis配套MD文档[Mybatis]学习笔记01:连接数据库,实现增删改[Mybatis]学 ...

  2. ext store 数据修改_Go 数据存储篇(一):基于内存存储实现数据增删改查功能...

    在 Web 编程中,经常需要处理用户请求数据,而用户请求数据的处理往往又涉及到数据存储与获取,支持存储数据的媒介很多,包括内存.文件系统.数据库等,接下来,学院君将花几个篇幅的教程来系统介绍 Go W ...

  3. Django实现对数据库数据增删改查(二)

    目录 1.基本框架 1.1.路由分发 1.2.视图函数-逻辑处理 1.3.模板 2.查询功能 2.1.视图函数 2.2.模板函数 3.添加功能 3.1.路由分发 3.2视图函数 3.3.模板 4.编辑 ...

  4. 一篇文章教会你创建vue项目和使用vue.js实现数据增删改查

    简介:一篇文章教会你创建vue项目和使用vue.js实现数据增删改查 [一.项目背景] 在管理员的一些后台页面里,数据列表中都会对这些数据进行增删改查的操作,例如管理员添加商品.修改商品价格.删除商品 ...

  5. C#操作Excel数据增删改查(转)

    C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...

  6. list vue 添加数据方法_一篇文章教会你创建vue项目和使用vue.js实现数据增删改查...

    简介:一篇文章教会你创建vue项目和使用vue.js实现数据增删改查 [一.项目背景] 在管理员的一些后台页面里,数据列表中都会对这些数据进行增删改查的操作,例如管理员添加商品.修改商品价格.删除商品 ...

  7. HBase【付诸实践 01】hbase shell 常用命令详解(表操作+数据增删改查+2种查询操作)(hbase-2.4.5 单机版standalone模式)

    1.运行环境 HBase的安装文件为:hbase-2.4.5-bin.tar.gz 相关配置信息可以查看<HBase-2.4.5 单机版standalone模式安装配置> 其他环境如下: ...

  8. Oracle 创建表空间,创建表、数据增删改

    Oracle 创建表空间,创建表.数据增删改 创建表空间 创建用户 用户授权 表的创建.修改与删除 创建表 数据类型 创建表的同时指定表空间 修改表 删除表 数据增删改 插入数据 修改数据 删除数据 ...

  9. 数据库数据增删改查练习题(1)——学生选课数据库

    数据库数据增删改查练习题(1)--学生选课数据库 基本数据表 S(SNO,SNAME,AGE,SEX)学生 C(CNO,CNAME,TEACHER)课程 SC(SNO,CNO,GRADE)选课 练习题 ...

最新文章

  1. Windows 8.1 explorer.exe总是崩溃的解决办法
  2. 晶圆级封装行业调研报告 - 市场现状分析与发展前景预测
  3. 我是明晃晃的开端(2017/4/17)
  4. 信息学奥赛一本通习题答案(一)
  5. 什么是准静态平坦瑞利衰落信道?
  6. 2012年7月份第2周51Aspx源码发布详情
  7. 工行u盾显示316_工行U盾只显示金融@家怎么显密码
  8. 凡诺CMS一处文件包含漏洞
  9. 再读王垠的《编程的智慧》,有怎样的感想?
  10. Unbuntu16.04下cmake-gui安装
  11. 初中英语知识水平测试软件,美国初中生英文水平测试!百个单词检测,看看你认识几个...
  12. 基于GUI混沌系统图像加密解密
  13. echarts堆叠图显示总数 tooltips处理
  14. Linux 内核树编译
  15. 信息安全工程师学习笔记《第二章》
  16. 计算机内存的安装方法,电脑内存条安装教程_电脑内存条安装注意事项
  17. 超多面试题合集,来瞅瞅你碰到了几道题~
  18. 【面试准备之】HR面试时100个关键问题
  19. [AC自动机 模板]
  20. 学习PLC必须要知道的小常识

热门文章

  1. 七种减压方法,赶紧收藏
  2. CentOs7查看防火墙
  3. 轮式里程计与激光雷达进行标定1--线性最小二乘直接线性方法
  4. c++的学习——金中的蛋糕裱花
  5. c语言判断是文件还是文件夹
  6. ❥关于C++之类的复制构造函数赋值运算符
  7. FA-PEG-MAL,叶酸-聚乙二醇-马来酰亚胺 实验用科研试剂;Folic acid PEG Maleimide
  8. 多线程爬取zxcs.me【代码记录】
  9. 基于微信小程序的小型企业人力资源管理小程序-计算机毕业设计
  10. 手机开热点,电脑连上却没有网的解决方法