##JDBC

JAVA Database Connectivity java 数据库连接

  • 为什么会出现JDBC

SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。

###使用JDBC的基本步骤

  1. 注册驱动

    DriverManager.registerDriver(new com.mysql.jdbc.Driver());

  2. 建立连接

    DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

  3. //2. 建立连接 参数一: 协议 + 访问的数据库 , 参数二: 用户名 , 参数三: 密码。 conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");

  4. 创建statement

    //3. 创建statement , 跟数据库打交道,一定需要这个对象 st = conn.createStatement();

  5. 执行sql ,得到ResultSet

    //4. 执行查询 , 得到结果集 String sql = "select * from t_stu"; rs = st.executeQuery(sql);

  6. 遍历结果集

    //5. 遍历查询每一条记录

  7. while(rs.next())
    { int id = rs.getInt("id");
    String name = rs.getString("name");
    int age = rs.getInt("age");System.out.println("id="+id + "===name="+name+"==age="+age);
    }
  8. 释放资源

if (rs != null) {try {rs.close();} catch (SQLException sqlEx) { } // ignore rs = null;}...

###JDBC 工具类构建

  1. 资源释放工作的整合
  1. 驱动防二次注册
DriverManager.registerDriver(new com.mysql.jdbc.Driver());Driver 这个类里面有静态代码块,一上来就执行了,所以等同于我们注册了两次驱动。 其实没这个必要的。
//静态代码块 ---> 类加载了,就执行。 java.sql.DriverManager.registerDriver(new Driver());最后形成以下代码即可。Class.forName("com.mysql.jdbc.Driver");
  1. 使用properties配置文件

    1. 在src底下声明一个文件 xxx.properties ,里面的内容吐下:

      driverClass=com.mysql.jdbc.Driver
      url=jdbc:mysql://localhost/student
      name=rootpassword=root
    2. 在工具类里面,使用静态代码块,读取属性

static{try {//1. 创建一个属性配置对象Properties properties = new Properties();InputStream is = new FileInputStream("jdbc.properties"); //对应文件位于工程根目录//使用类加载器,去读取src底下的资源文件。 后面在servlet  //对应文件位于src目录底下//InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");//导入输入流。properties.load(is);//读取属性driverClass = properties.getProperty("driverClass");url = properties.getProperty("url");name = properties.getProperty("name");password = properties.getProperty("password");} catch (Exception e) {e.printStackTrace();}}

###数据库的CRUD sql

  • insert

    INSERT INTO t_stu (NAME , age) VALUES ('wangqiang',28)

INSERT INTO t_stu VALUES (NULL,'wangqiang2',28)// 1. 获取连接对象conn = JDBCUtil.getConn();// 2. 根据连接对象,得到statementst = conn.createStatement();//3. 执行添加String sql = "insert into t_stu values(null , 'aobama' , 59)";//影响的行数, ,如果大于0 表明操作成功。 否则失败int result = st.executeUpdate(sql);if(result >0 ){System.out.println("添加成功");}else{System.out.println("添加失败");}
  • delete

    DELETE FROM t_stu WHERE id = 6

// 1. 获取连接对象conn = JDBCUtil.getConn();// 2. 根据连接对象,得到statementst = conn.createStatement();//3. 执行添加String sql = "delete from t_stu where name='aobama'";//影响的行数, ,如果大于0 表明操作成功。 否则失败int result = st.executeUpdate(sql);if(result >0 ){System.out.println("删除成功");}else{System.out.println("删除失败");}
  • query

    SELECT * FROM t_stu

// 1. 获取连接对象conn = JDBCUtil.getConn();// 2. 根据连接对象,得到statementst = conn.createStatement();// 3. 执行sql语句,返回ResultSetString sql = "select * from t_stu";rs = st.executeQuery(sql);// 4. 遍历结果集while (rs.next()) {String name = rs.getString("name");int age = rs.getInt("age");System.out.println(name + "   " + age);}
  • update

    UPDATE t_stu SET age = 38 WHERE id = 1;

// 1. 获取连接对象conn = JDBCUtil.getConn();// 2. 根据连接对象,得到statementst = conn.createStatement();//3. 执行添加String sql = "update t_stu set age = 26 where name ='qyq'";//影响的行数, ,如果大于0 表明操作成功。 否则失败int result = st.executeUpdate(sql);if(result >0 ){System.out.println("更新成功");}else{System.out.println("更新失败");}

###使用单元测试,测试代码

  1. 定义一个类, TestXXX , 里面定义方法 testXXX.

  2. 添加junit的支持。

    右键工程 --- add Library --- Junit --- Junit4

  3. 在方法的上面加上注解 , 其实就是一个标记。

    @Test public void testQuery() { ... }

  4. 光标选中方法名字,然后右键执行单元测试。 或者是打开outline视图, 然后选择方法右键执行。

###Dao模式

Data Access Object 数据访问对象

  1. 新建一个dao的接口, 里面声明数据库访问规则
/*** 定义操作数据库的方法*/public interface UserDao {/*** 查询所有*/void findAll();}
  1. 新建一个dao的实现类,具体实现早前定义的规则
public class UserDaoImpl implements UserDao{@Overridepublic void findAll() {Connection conn = null;Statement st = null;ResultSet rs = null;try {//1. 获取连接对象conn = JDBCUtil.getConn();//2. 创建statement对象st = conn.createStatement();String sql = "select * from t_user";rs = st.executeQuery(sql);while(rs.next()){String userName = rs.getString("username");String password = rs.getString("password");System.out.println(userName+"="+password);}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtil.release(conn, st, rs);}}}
  1. 直接使用实现

    @Test public void testFindAll(){ UserDao dao = new UserDaoImpl(); dao.findAll(); }

实习心得体会之JDBC操作21090712相关推荐

  1. java实训意义_java实习心得体会

    通过java实习,我自身发生了重大的转变,我相信我会在JAVA开发这条路上走的更长更远,分享心得体会.下面是学习啦小编为大家收集整理的java实习心得体会,欢迎大家阅读. java实习心得体会篇1 经 ...

  2. java 绘制图形实验心得体会_绘图实习心得体会3篇

    所谓绘图,就是绘制图片.图纸的意思.通常用于建筑绘图,产品绘制等等.下面是学习啦,为大家准备的绘图实习心得体会范文,希望大家喜欢! 本以为暑期实习能走出校门到外面游历见识一番,却不知所谓的实习只是呆在 ...

  3. 计算机绘图实训体会,CAD实习心得体会

    原标题:CAD实习心得体会 cad实习心得体会 一.课程实习的目的: 把握autocad用于工程制图的基本操作,了解工程图纸绘制的格式和要求,能够用autocad绘制二维的工程图纸和简单的三维图纸.并 ...

  4. 计算机组成心得1500字,测量实习心得体会1500字

    测量实习心得体会1500字 希望同学们在测量过程中做到最大程度地精确测量,以下是关于测量实习心得体会1500字范文,欢迎阅读! 测量实习心得体会1500字(一) 土木工程测量作为专业的一项基本功,是我 ...

  5. html5实习体会,html5实习心得体会.doc

    2019年html5实习心得体会 html5实习心得体会该怎么写呢?下面整理了html5实习心得体会,欢迎大家参考学习! ? 21世纪的时期,中国的网络正在实飞猛进,大多的企业都是通过建立网站来进入企 ...

  6. 计算机专业实践体会,计算机专业毕业实习心得体会

    计算机专业毕业实习心得体会 相关内容: 随着计算机及网络技术的飞速发展,全球信息化已成为人类发展的必然趋势,你知道计算机专业读书心得是什么吗?接下来就是第一范文网小编为大家整理的关于计算机专业读书心得 ...

  7. linux环境搭建实践总结,linux实习心得体会

    linux实习心得体会 linux实习心得体会1 学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者 ...

  8. 数控计算机实习小结,数控机床实习心得体会

    导语:近年来,随着计算机控制技术的发展,数字控制技术已经广泛应用于工业控制的各个领域,本文是大学网unjs.com小编精心编辑的,希望能帮助到你! 数控机床实习心得体会 近年来,随着计算机控制技术的发 ...

  9. 测量学matlab使用心得,测量学实习心得体会4篇

    测量学首先是一项精确的工作,测量学的学习目的就是要将这些理论与实际工程联系起来.今天学习啦小编整理了测量学实习的体会,希望对大家有帮助. 为期十天的测量实习结束了,在这期间,我们小组完成了所有的测量任 ...

最新文章

  1. 微信小程序页面之间数据传递
  2. pythongui登录界面密码显示_python的GUI之一个简单的登录界面
  3. 利用stdin stdout stderr及POSIX-linux机制重定向写日志
  4. Android:AS与Unity3D之间打包的各种坑及解决方案
  5. Kafka中文官方文档
  6. mysql dba系统学习(3)mysql的启动停止
  7. 【深入Java虚拟机JVM 09】JVM垃圾回收finalize方法--对象最有一次自我拯救
  8. Spring-Security 自定义Filter完成验证码校验
  9. mybatis大于小于的转义
  10. 软件设计师历年真题与解析分享(05——17年)
  11. electron 屏幕标注_gInk:一款好用的屏幕标注写画软件
  12. 2022深圳杯D题思路:复杂水平井三维轨道设计
  13. 浏览器开启WebGL
  14. linux gpt转mbr命令,linux GPT转mbr
  15. 正儿八经做MIS系统-1
  16. 网站可行性报告范文_鄂州编写可行性报告公司2020范文格式
  17. QT操作Word汇总
  18. 理解AsyncTask
  19. SAP成本核算步骤简介
  20. 2019.06.17

热门文章

  1. 教育对人的改变有多大?
  2. 男人必听九大歌曲精选
  3. 喷泉设备中的水幕效果
  4. 【SQL】Mysql5.7版本实现row_number分组排序功能
  5. 写论文的工具推荐(包括下载论文,写作,翻译等)
  6. python使用微信设置-用Python来可视化微信好友
  7. 计算机专业项目化教学,中职计算机专业实训课项目化教学实践探索
  8. 心脏滴血(CVE-2014-0160)
  9. 【数论】因数与倍数(一)质数与合数
  10. 用python实现BP神经网络预测运动员的跳高成绩