测试与数据库建立连接

package cn.dym01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;/*** 测试与数据库建立连接* @author Administrator**/
public class Demo01 {public static void main(String[] args) {try {// 加载驱动类Class.forName("com.mysql.jdbc.Driver");long start=System.currentTimeMillis();//建立连接(连接对象内部其实包含了Socket对象,是一个远程的连接。比较耗时!这是Connection对象管理的一个要点!)//真正开发中,为了提高效率,都会使用  连接池  来管理连接对象Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc", "root", "123456");long end=System.currentTimeMillis();System.out.println(conn);System.out.println("建立连接,耗时:"+(end-start)+"ms");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}


测试执行SQL语句,以及SQL注入问题   所以一般不用statement

package cn.dym01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*** 测试执行SQL语句,以及SQL注入问题   所以一般不用statement* @author Administrator**/
public class Demo02 {public static void main(String[] args) {try {// 加载驱动类Class.forName("com.mysql.jdbc.Driver");//建立连接(连接对象内部其实包含了Socket对象,是一个远程的连接。比较耗时!这是Connection对象管理的一个要点!)//真正开发中,为了提高效率,都会使用  连接池  来管理连接对象Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc", "root", "123456");Statement stmt= conn.createStatement();String sql="insert into t_user (username,pwd,regTime) values ('苍凌','cl',NOW());";stmt.execute(sql);//测试SQL注入String id="5 or 1=1";  //此句一执行,该数据库的数据表中的数据将会被清空不见sql="delete from t_user where id="+id;stmt.execute(sql);} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

测试 PreparedStatement的基本用法

package cn.dym01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;/*** 测试 PreparedStatement的基本用法* @author Administrator**/
public class Demo03 {public static void main(String[] args) {try {// 加载驱动类Class.forName("com.mysql.jdbc.Driver");Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc", "root", "123456");String sql="insert into t_user (username,pwd,regTime) values (?,?,?)";  // ? 代表占位符PreparedStatement ps=conn.prepareStatement(sql);
//          ps.setString(1, "代止兮");  //  参数索引是从1开始计算,而不是0
//          ps.setString(2, "14");
//          ps.setDate(3, new java.sql.Date(System.currentTimeMillis()));//可以使用setObject方法处理参数,ps.setObject(1, "苍凌uyk");ps.setObject(2, "cljh");ps.setObject(3, new java.sql.Date(System.currentTimeMillis()));System.out.println("插入一行记录");ps.execute();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

测试ResultSet结果集的基本用法

package cn.dym01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;/*** 测试ResultSet结果集的基本用法**/
public class Demo04 {public static void main(String[] args) {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {//加载驱动类Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");String sql = "select id,username,pwd from t_user where id>?";  //?占位符ps = conn.prepareStatement(sql);ps.setObject(1, 13);  //把id大于13的记录都取出来rs = ps.executeQuery();while(rs.next()){System.out.println(rs.getInt(1)+"---"+rs.getString(2)+"---"+rs.getString(3));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally{//遵循:resultset-->statment-->connection这样的关闭顺序!一定要将三个trycatch块,分开写!try {if(rs!=null){rs.close();}} catch (SQLException e) {e.printStackTrace();}try {if(ps!=null){ps.close();}} catch (SQLException e) {e.printStackTrace();}try {if(conn!=null){conn.close();}} catch (SQLException e) {e.printStackTrace();}}}
}


package cn.dym01;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;/*** 测试批处理的基本用法**/
public class Demo05 {public static void main(String[] args) {Connection conn = null;Statement stmt = null;ResultSet rs = null;try {//加载驱动类Class.forName("com.mysql.jdbc.Driver");conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");conn.setAutoCommit(false);  //设为手动提交long start = System.currentTimeMillis();stmt = conn.createStatement();for(int i=0;i<20000;i++){stmt.addBatch("insert into t_user (username,pwd,regTime) values ('代"+i+"',666666,now())");}stmt.executeBatch();conn.commit();  //提交事务long end = System.currentTimeMillis();System.out.println("插入20000条数据,耗时(毫秒):"+(end-start));} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally{//遵循:resultset-->statment-->connection这样的关闭顺序!一定要将三个trycatch块,分开写!try {if(rs!=null){rs.close();}} catch (SQLException e) {e.printStackTrace();}try {if(stmt!=null){stmt.close();}} catch (SQLException e) {e.printStackTrace();}try {if(conn!=null){conn.close();}} catch (SQLException e) {e.printStackTrace();}}}
}

Java的知识点33——JDBC相关推荐

  1. java的知识点33——死锁及解决方案

    死锁 死锁:过多的同步可能造成互相不释放资源,从而相互等待,一般发生与同步中持有多个对象的锁 避免:不要在同一个代码块中,同时持有多个对象的锁 /*** 死锁:过多的同步可能造成互相不释放资源,从而相 ...

  2. 【2021秋招】Java 面试知识点【精华背诵版】

    Java 开发知识点[背诵版] Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理和 ...

  3. Java 面试知识点【精华背诵版】

    Java 开发知识点[背诵版] Java 基础 40 语言特性 12 Q1:Java 语言的优点? ① 平台无关性,摆脱硬件束缚,"一次编写,到处运行". ② 相对安全的内存管理和 ...

  4. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  5. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  6. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. Java面试知识点:网络编程

    问题:Java面试知识点:网络编程 答案: 1.InetAddress 代码如下: package com.xy;import java.net.InetAddress; import java.ne ...

  8. Java面试知识点:Object类、Math类、BigDecimal类、自动装箱、拆箱

    问题:Java面试知识点:Object类.BigDecimal类.自动装箱.拆箱 答案: 1.Object类: 代码如下: package com.xy;/*** @ProjectName: day0 ...

  9. java基础知识点整理一

    java基础知识点整理一 引言 '''突然发觉任何一门语言的基础知识部分,都比较杂一些.如果个人经过梳理之后,知识体系系统化,可以让基础更加牢靠一些.但是还是会有一些遗忘.所以,我想把一些比较重要但是 ...

最新文章

  1. Https 客户端与服务器交互过程梳理(转)
  2. boost::log模块实现格式化程序流的测试程序
  3. .net core 与ELK(2)安装Elasticsearch可视化工具
  4. halcon gen_region_hline 绘制霍夫变换提取直线
  5. 关于重构之Switch的处理【二】
  6. 【Spring】spring depend-on 到底是干什么的?
  7. DisJSet:Wireless Network(POJ 2236)
  8. linux下实现web数据同步的四种方式(性能比较)
  9. 3D引擎多线程:资源异步加载
  10. vb还是python强大-最难学的七大编程语言,VB 第一,Python垫底,看你学的排第几...
  11. Go 遍历map时的key随机化问题及解决方法
  12. sql server去空格函数LTRIM()RTRIM(),判断是否为空函数isnull(),以及获取字符串长度len()的使用方法
  13. MFC控件之cimagelist,加载不上位图
  14. 「Android - SoundPool使用」
  15. STM8单片机STVD环境新建工程笔记
  16. 算法题目打卡:Ques20201025
  17. BinaryFormatter serialization and deserialization are disabled within this application
  18. HDU 6438 Buy and Resell
  19. 基于MSP430G2553点亮TM1637数码管
  20. 对 kubenetes 扩容后端 rbd 磁盘容量

热门文章

  1. poj3279 Fliptile
  2. 多窗体、窗体传值、打开唯一窗体操作
  3. html和html5学习
  4. C++零食:WTL中使用双缓冲避免闪烁
  5. php curl流方式远程下载大文件
  6. HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
  7. Android开发7——android.database.CursorIndexOutOfBoundsException:Index -1 requested
  8. linux下使用update-alternatives切换java版本的正确姿势
  9. SD卡驱动分析(二)
  10. linux一切皆文件之tty字符设备(深入理解sshd创建pty的过程) (五)