完整java开发中JDBC连接数据库代码和步骤

2023-05-16

转载自: Hongten
  • JDBC连接数据库   
  • •创建一个以JDBC连接数据库的程序,包含7个步骤:   
  •  1、加载JDBC驱动程序:   
  •     在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),   
  •     这通过java.lang.Class类的静态方法forName(String  className)实现。   
  •     例如:   
  •     try{   
  •     //加载MySql的驱动类   
  •     Class.forName("com.mysql.jdbc.Driver") ;   
  •     }catch(ClassNotFoundException e){   
  •     System.out.println("找不到驱动程序类 ,加载驱动失败!");   
  •     e.printStackTrace() ;   
  •     }   
  •    成功加载后,会将Driver类的实例注册到DriverManager类中。   
  •  2、提供JDBC连接的URL   
  •    •连接URL定义了连接数据库时的协议、子协议、数据源标识。   
  •     •书写形式:协议:子协议:数据源标识   
  •     协议:在JDBC中总是以jdbc开始   
  •     子协议:是桥连接的驱动程序或是数据库管理系统名称。   
  •     数据源标识:标记找到数据库来源的地址与连接端口。   
  •     例如:(MySql的连接URL)   
  •     jdbc:mysql:   
  •         //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;   
  •    useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为   
  •    gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。   
  •  3、创建数据库的连接   
  •     •要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,   
  •      该对象就代表一个数据库的连接。   
  •     •使用DriverManager的getConnectin(String url , String username ,    
  •     String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和   
  •      密码来获得。   
  •      例如:   
  •      //连接MySql数据库,用户名和密码都是root   
  •      String url = "jdbc:mysql://localhost:3306/test" ;    
  •      String username = "root" ;   
  •      String password = "root" ;   
  •      try{   
  •     Connection con =    
  •              DriverManager.getConnection(url , username , password ) ;   
  •      }catch(SQLException se){   
  •     System.out.println("数据库连接失败!");   
  •     se.printStackTrace() ;   
  •      }   
  •  4、创建一个Statement   
  •     •要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3  
  •      种类型:   
  •       1、执行静态SQL语句。通常通过Statement实例实现。   
  •       2、执行动态SQL语句。通常通过PreparedStatement实例实现。   
  •       3、执行数据库存储过程。通常通过CallableStatement实例实现。   
  •     具体的实现方式:   
  •         Statement stmt = con.createStatement() ;   
  •        PreparedStatement pstmt = con.prepareStatement(sql) ;   
  •        CallableStatement cstmt =    
  •                             con.prepareCall("{CALL demoSp(? , ?)}") ;   
  •  5、执行SQL语句   
  •     Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate   
  •    和execute   
  •     1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句   
  •         ,返回一个结果集(ResultSet)对象。   
  •      2int executeUpdate(String sqlString):用于执行INSERT、UPDATE或   
  •         DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   
  •      3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的   
  •         语句。   
  •    具体实现的代码:   
  •           ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   
  •     int rows = stmt.executeUpdate("INSERT INTO ...") ;   
  •     boolean flag = stmt.execute(String sql) ;   
  •  6、处理结果   
  •     两种情况:   
  •      1、执行更新返回的是本次操作影响到的记录数。   
  •      2、执行查询返回的结果是一个ResultSet对象。   
  •     • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些   
  •       行中数据的访问。   
  •     • 使用结果集(ResultSet)对象的访问方法获取数据:   
  •      while(rs.next()){   
  •          String name = rs.getString("name") ;   
  •     String pass = rs.getString(1) ; // 此方法比较高效   
  •      }   
  •     (列是从左到右编号的,并且从列1开始)   
  •  7、关闭JDBC对象    
  •      操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声   
  •      明顺序相反:   
  •      1、关闭记录集   
  •      2、关闭声明   
  •      3、关闭连接对象   
  •           if(rs != null){   // 关闭记录集   
  •         try{   
  •             rs.close() ;   
  •         }catch(SQLException e){   
  •             e.printStackTrace() ;   
  •         }   
  •           }   
  •           if(stmt != null){   // 关闭声明   
  •         try{   
  •             stmt.close() ;   
  •         }catch(SQLException e){   
  •             e.printStackTrace() ;   
  •         }   
  •           }   
  •           if(conn != null){  // 关闭连接对象   
  •          try{   
  •             conn.close() ;   
  •          }catch(SQLException e){   
  •             e.printStackTrace() ;   
  •          }   
  •           } 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

完整java开发中JDBC连接数据库代码和步骤 的相关文章

  • Ducci序列(Ducci Sequence)

    Ducci Sequence Time limit 3 000 seconds A Ducci sequence is a sequence of n tuples of integers Given an n tuple of integ
  • 卡片游戏(Throwing cards away I)

    Problem B Throwing cards away I Given is an ordered deck of n cards numbered 1 to n with card 1 at the top and card n at
  • 交换学生(Foreign Exchange)

    Problem E Foreign Exchange Input standard input Output standard output Time Limit 1 second Your non profit organization
  • CAN通信物理容错测试checklist

    CAN通信物理容错测试checklist 工作项目中 xff0c 我们有时有些产品CAN总线功能 xff0c 一般情况下我们必须要满足以下几种状况的测试项才算符合要求 一 CAN H与CAN L短路 判定标准 xff1a 短接故障发生后 x
  • 对称轴(Symmetry)

    Symmetry Time limit 3 000 seconds The figure shown on the left is left right symmetric as it is possible to fold the she
  • 打印队列(Printer Queue)

    Printer Queue Time limit 3 000 seconds 分析 首先记录所求时间它在队列中的位置 xff0c 用一个队列存储这些任务的优先级 xff0c 同时也创建一个队列存储对应任务一开始的位置 xff0c 那么当我们
  • 更新字典(Updating a Dictionary)

    Updating a Dictionary Time Limit 1000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description In th
  • 铁轨(Rails)

    Rails Time limit 3 000 seconds Rails There is a famous railway station in PopPush City Country there is incredibly hilly
  • 矩阵链乘(Matrix Chain Multiplication)

    Matrix Chain Multiplication Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description
  • 天平(Not so Mobile)

    Not so Mobile Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description Before being
  • 下落的树叶(The Falling Leaves)

    The Falling Leaves Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description Each yea
  • 四分树(Quadtrees)

    Quadtrees Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description A quadtree is a r
  • 油田(Oil Deposits)

    Oil Deposits Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description The GeoSurvCom
  • Abbott的复仇(Abbott's Revenge)

    Abbott 39 s Revenge Time limit 3 000 seconds Abbott s Revenge Abbott s Revenge The 1999 World FinalsContest included a p
  • rockchip rk3568 openwrt修改根文件系统分区

    rk3568的openwrt根文件系统分区大小如何修改 xff1f 1 rootfs大小取决于rk356x config的配置 xff0c 默认CONFIG TARGET ROOTFS PARTSIZE 61 512 xff0c 如果需要修
  • 除法(Division)

    Division Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description Write a program th
  • 最大乘积(Maximum Product)

    Maximum Product Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description Problem D M
  • 分数拆分(Fractions Again?!)

    Fractions Again Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description Problem A F
  • 二叉树(Tree Recovery)

    Tree Recovery Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description Little Valent
  • 骑士的移动(Knight Moves)

    Knight Moves Time Limit 3000MS Memory Limit Unknown 64bit IO Format lld amp llu Submit Status Description A friend of yo

随机推荐

  • 单词(Play On Words)

    分析 首先需对欧拉道路有所了解 存在欧拉道路的充分条件 xff1a 对于无向图而言 xff0c 如果一个无向图是连通的 xff0c 且最多只有两个奇点 xff08 顶点的度数为奇数 xff09 xff0c 则一定存在欧拉道路 如果有两个奇点
  • 成语接龙(Idiomatic Phrases Game)

    Idiomatic Phrases Game Problem Description Tom is playing a game called Idiomatic Phrases Game An idiom consists of seve
  • DijKstra算法(单源最短路径)

    原文转载自 xff1a 梦醒潇湘love 转载原文是为了方便自己学习 xff0c 也希望能让更多读者在需要的情况下学到更多的知识 Dijkstra xff08 迪杰斯特拉 xff09 算法是典型的最短路径路由算法 xff0c 用于计算一个节
  • Floyd算法(最短路径)

    Floyd 算法允许图中有带负权值的边 xff0c 但不许有包含带负权值的边组成的回路 原文转载自 xff1a 梦醒潇湘love 上一篇文章我们通过迪杰斯特拉算法解决了从某个源点到其余各顶点的最短路径问题 从循环嵌套很容易得到此算法的时间复
  • 最爱的城市

    最爱的城市 时间限制 xff1a 1 秒 内存限制 xff1a 32 兆 特殊判题 xff1a 否 标签 Floyd最短路径 题目描述 一天小明捧着一本世界地图在看 xff0c 突然小明拿起笔 xff0c 将他最爱的那些城市标记出来 xff
  • Docker中配置Nginx多域名配置多个应用

    注意容器中是一个被隔离的空间 xff0c 可以理解为一个独立的服务器 xff0c 所以在做反向代理的时候 xff0c nginx配置不能使用localhost xff0c 可以使用link方式去访问其他容器 nginxa container
  • 八皇后问题(回溯法)

    八皇后问题 xff08 源于 刘汝佳的 算法竞赛入门经典 xff08 第2版 xff09 xff09 在棋盘上放置8个皇后 xff0c 使得它们互不攻击 xff0c 此时每个皇后的攻击范围为同行同列和同对角线 xff0c 要求找出所有解 x
  • 大整数的乘法

    大整数的乘法 xff08 这里主要讨论的是两个较大的数相乘的效率问题 xff0c 实际上并不是真正意义上的大数相乘 在java中有个BigInteger类已经可以储存大数 xff0c 并提供了大数相乘的方法了 xff09 分析 首先 xff
  • 2的次幂表示

    2的次幂表示 时间限制 xff1a 1 0s 内存限制 xff1a 512 0MB 问题描述 任何一个正整数都可以用2进制表示 xff0c 例如 xff1a 137的2进制表示为10001001 将这种2进制表示写成2的次幂的和的形式 xf
  • 扑克序列

    扑克序列 题目描述 标题 xff1a 扑克序列 A A 2 2 3 3 4 4 xff0c 一共4对扑克牌 请你把它们排成一行 要求 xff1a 两个A中间有1张牌 xff0c 两个2之间有2张牌 xff0c 两个3之间有3张牌 xff0c
  • 分糖果

    分糖果 时间限制 xff1a 1 0s 内存限制 xff1a 256 0MB 问题描述 有n个小朋友围坐成一圈 老师给每个小朋友随机发偶数个糖果 xff0c 然后进行下面的游戏 xff1a 每个小朋友都把自己的糖果分一半给左手边的孩子 一轮
  • 最长公共子序列(LCS)

    最长公共子序列LCS问题 给定2个序列X和Y xff0c 当另一序列Z既是X的子序列又是Y的子序列时 xff0c 称Z是序列X和Y的公共子序列 给定X 61 x1 x2 xm 和Y 61 y1 y2 yn xff0c 请找出X和Y的最长公共
  • 0-1背包问题

    0 1背包问题 甲欲出去旅游 xff0c 可携带20 公斤的行李 xff0c 已知甲想带的 5 件行李的重量及其在旅行中产生的效益如下表所示 xff1a 行李编号 I II III IV V 重量 千克 6 4 8 8 4 行李效益 8 4
  • 旅行售货员问题

    旅行售货员问题 题目 某售货员要到4 个城市去推销商品 xff0c 已知各城市之间的路程 xff0c 如右图所示 请问他应该如何选定一条从城市 1 出发 xff0c 经过每个城市一遍 xff0c 最后回到城市 1 的路线 xff0c 使得总
  • https网页加载http资源时不显示图片,报错解决方案

    https网页加载http资源时不显示图片 xff0c 报错解决方案 自动将http的不安全请求升级为https静态文件放置本地反向代理请求http资源 加载http资源时会报错 xff1a 自动将http的不安全请求升级为https 页面
  • 数独游戏

    数独游戏 题目 九宫格是在81个格子 9 9 中 xff0c 要满足以下条件 xff1a xff08 1 xff09 每个横行和竖列中的9个格子都包含数字1 xff5e 9 xff0c 且不重复 xff1b xff08 2 xff09 每个
  • 静态内部类和普通内部类

    两种内部类 Java的内部类有两种 xff0c 一种是静态内部类 xff0c 另一种是普通内部类 xff0c 普通内部类可以获得外部对象的引用 xff0c 所以在普通内部类能够访问外部对象的成员变量 xff0c 也就能够使用外部类的资源 x
  • 迷宫老鼠游戏

    迷宫老鼠游戏 题目 以一个m n的长方阵表示迷宫 xff0c 0 和 1 分别表示迷宫中的通路和障碍 请设计一个算法 xff0c 对任意设定的迷宫 xff0c 求出一条从入口到出口的通路 xff0c 或得出没有通路的结论 xff1b 如果有
  • java通过JDBC链接SQLServer2012

    下面请一字一句地看 xff0c 一遍就设置成功 xff0c 比你设置几十遍失败 xff0c 费时会少得多 首先 xff0c 在连接数据库之前必须保证SQL Server 2012是采用SQL Server身份验证方式而不是windows身份
  • 完整java开发中JDBC连接数据库代码和步骤

    转载自 xff1a Hongten JDBC连接数据库 创建一个以JDBC连接数据库的程序 xff0c 包含7 个步骤 xff1a 1 加载JDBC驱动程序 xff1a 在连接数据库之前 xff0c 首先要加载想要连接的数据库的驱动到JVM