当前位置: 首页 > news >正文

天津网站建设制作品牌公司页面设置上37cm

天津网站建设制作品牌公司,页面设置上37cm,网站备案到公司名称,蒙牛官网网站怎么做的JDBC#xff08;Java Database Connectivity#xff0c;Java数据库连接#xff09;是应用程序编程借口#xff08;API#xff09;#xff0c;描述了一套访问关系数据库的标准Java类库。可以在程序中使用这些API#xff0c;连接到关系数据库#xff0c;执行SQL语句…JDBCJava Database ConnectivityJava数据库连接是应用程序编程借口API描述了一套访问关系数据库的标准Java类库。可以在程序中使用这些API连接到关系数据库执行SQL语句对数据进行处理。JDBC不但提供了访问关系数据库的标准API还为数据库厂商提供了一个标准的体系结构让厂商可以为自己的数据库提供JDBC驱动程序这些驱动程序可以让Java应用程序直接访问厂商的数据库产品从而提高了Java程序访问数据库的效率。 1、JDBC驱动程序的类型 JDBC驱动程序可以分为4类分别是 1JDBC-ODBC桥通过ODBC访问数据库。2部分本地API部分Java驱动程序大都C语言编写依赖具体的平台。3JDBC网络纯Java驱动程序利用中间件的应用服务器来访问数据库应用服务器作为数据库的网关客户端通过它可以连接到不同的数据库服务器如WebLogic服务器。4本地协议纯Java驱动程序目前绝大多数数据库厂商支持客户程序通过网络直接与数据库通信的网络协议来直接访问数据库。这种类型的JDBC驱动程序完全用Java编写通过与数据库建立直接的套接字连接采用具体厂商的网络协议把JDBC API调用转换为直接的网络调用。这种类型的驱动是访问数据库效率最高的不过由于每个数据库厂商有自己的协议因此访问不同厂商的数据库需要不同的JDBC驱动程序。 2、下载MySQL JDBC 驱动 MySQL的JDBC 驱动程序没有包含在数据库的安装包中需要单独下载下载的网址为MySQL :: Download Connector/Jhttps://dev.mysql.com/downloads/connector/j/在浏览器中输入上面的网址进入MySQL的JDBC 驱动程序的下载页面如下图 在上图下拉框中选择“Platfrom Independent”然后出现如下图Window平台下载zip文件下载。 将zip文件解压缩将出现一个类似mysql-connector-j-8.3.0.jar的文件它就是MySQL数据库的JDBC驱动。 3、JDBC API JDBC API包含在JDK中被分为两个包java.sql和javax.sql。java.sql包中定义了访问数据库的接口和类其中一些接口由驱动程序提供商来实现。 在开发数据库访问程序时经常会编写如下的代码。 String url jdbc:mysql://127.0.0.1:3306/mysql; String username root; String password 2005Liuzx0302;// 加载数据库驱动 Class.forName(com.mysql.jdbc.Driver); conn DriverManager.getConnection(url,username,password); Statement stmt conn.createStatement(); ResultSet rs stmt.executeQuery(select * from user_info); 从上面代码可以看出利用JDBC访问数据库有统一的步骤。 1首先调用Class类的forName()方法加载要访问的数据库的JDBC驱动类 2接下来调用Java的JDBC APIjava.sql包中的DriverManager类中的getConnection方法建立与数据库的连接 3然后调用Connection对象的createStatement方法 4最后调用Statement对象的executeQuery方法执行SQL语句得到ResultSet对象就可以利用该对象来获取数据库中的数据了。 当然最后要关闭数据库连接对象释放数据库连接资源。 4、加载并注册数据库驱动 使用JDBC方法数据库首先就是要调用Class类的forName方法加载要访问数据库厂商的JDBC驱动。了解这行代码背后发生的事情让我感觉有些豁然开朗。 1Driver接口 java.sql.Driver是所有JDBC驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的不同厂商实现该接口的类名是不同的。常见的有 com.microsoft.jdbc.sqlserver.SQLServerDriver微软SQL Server2000版本驱动com.microsoft.sqlserver.jdbc.SQLServerDriver微软SQL Server2005及以后版本驱动oracle.jdbc.driver.OracleDriver是Oracle的JDBC驱动的类名Oracle安装目录下jdbc目录中com.mysql.cj.jdbc.Driver是MySQL 8.0.x版本的驱动的类名。 Driver接口提供了一个connection方法用来建立到数据库的连接该方法的签名如下 Connection connect(String url,Properties info) throws SQLException 开发人员在程序中不需要直接去访问这些实现了Driver接口的类而是由Java的JDK 中的JDBC API(java.sql)中的驱动程序管理器类提供的方法来建立数据库连接通过驱动程序管理器类的getConnection()方法来获取数据库连接。 2深入理解JDBC的加载与注册驱动背后发生的事情 加载JDBC驱动是调用Class类的静态方法forName向其传递要加载的JDBC驱动的类名。在运行时类加载从CLASSPATH路径中定位和加载JDBC驱动类。在加载驱动程序后需要注册驱动程序的一个实例。 DriverManager类是属于JDBC API(java.sql包中提供的用来负责管理加载的驱动程序这个类中的所有方法都是静态的在DriverManager类中提供了registerDriver方法来注册驱动程序类的实例该方法的签名如下 public statcic void registerDriver(Driver driver) throw SQLException 需要清楚的是通常不需要开发人员在程序中直接调用registerDriver方法来注册驱动程序的实例因为实现Driver接口的驱动程序类都包含了一个静态代码块在这个静态代码块中会调用DriverManager.registerDriver方法来注册自身的的一个实例。当使用Class类的forName方法在数据库驱动程序类的时候会自动执行该静态代码块从而注册驱动程序的一个实例这样使用DriverManager.getConnection方法就返回相应的驱动程序的数据库连接Connection对象。 下面是MySQL 驱动程序类的代码片段 public class Driver extends NonRegisteringDriver implements java.sql.Driver {//// Register ourselves with the DriverManager//static {try {java.sql.DriverManager.registerDriver(new Driver());} catch (SQLException e) {throw new RuntimeException(Cant register driver!);}}...} 从上面代码看加载数据库厂商的驱动类会自动执行该类的静态代码块调用JDBC的驱动管理类DriverManager.registerDriver方法并传入参数new Driver()注册该厂商自身的驱动实例。 5、建立数据库连接 调用JDBC的DriverManager类的getConnection方法建立数据库连接上面提到DriverManager类在java.sql包中其中方法都是静态的所以可以直接通过类名DriverManager.getConnection()来调用。在DriverManager类中重载了3个getConnection方法 1public static Connection getConnection(String url) throws SQLException 该方法通过给出的数据库URL建立到数据库的连接。 2public static Connection getConnection(String urlString userString password) throws SQLException 该方法除了需要数据库URL还需要用户名和密码来建立到数据库的连接。 3public static Connection getConnection(String urlProperties info) throws SQLException 该方法需要数据库URL和java.util.Properties对象。Properties对象包含了用于特定数据库所需要的参数以键值对的方式指定连接参数来建立到数据库的连接。 JDBC URL用于标识一个被注册的驱动程序驱动程序管理器通过这个URL来选择正确的驱动程序从而建立到数据库的连接。JDBC URL的语法如下 jdbc:subprotocol:subname 整个URL用冒号被分成了3个部分。 协议在上面语法中jdbc为协议在JDBC中它是唯一允许的协议即总是它只能是它。 子协议subprotocl子协议用于标识一个数据库驱动程序。 子名称subname子名称的语法与具体的驱动程序相关不同驱动语法不尽相同。 常用数据可的JDBC URL SQL Server2005及以后jdbc:sqlserver://localhost:1433;databasenamepubs Oracle9i、10g、11gjdbc:oracel:thinlocalhost:1521:ORCL MySQL8.0.xjdbc:mysql://localhost:3306/databasename?userSSLfalseserverTimezoneUTC userSSLfalse: 这个参数指示JDBC驱动程序不要使用SSL来加密与MySQL服务器的连接。在某些情况下为了简化配置或出于性能考虑你可能想要禁用SSL。但请注意禁用SSL可能会降低连接的安全性。serverTimezoneUTC: 这个参数设置MySQL服务器使用的时区为UTC协调世界时。这有助于避免在Java应用程序和MySQL服务器之间由于时区差异而可能产生的时间问题。 serverTimezoneUTC 并不是JDBC连接MySQL时必须的参数。这个参数的主要用途是告诉JDBC驱动程序期望从MySQL服务器接收的时间戳使用哪个时区。如果不指定这个参数JDBC驱动程序通常会使用系统的默认时区来解析时间戳这可能导致在Java应用程序和MySQL服务器之间出现时区相关的问题。 如果你确定你的Java应用程序和MySQL服务器使用的时区是一致的或者你愿意让Java应用程序使用系统的默认时区来解析时间戳那么你可以省略这个参数。 然而在实际应用中为了避免潜在的时区问题很多开发者会选择明确指定 serverTimezone 参数。特别是当你的应用程序需要处理跨时区的数据或者当你的应用程序和数据库服务器部署在不同的地理位置时指定时区参数会是一个好习惯。 另外需要注意的是除了 serverTimezone 参数MySQL JDBC驱动程序还提供了其他与时区相关的参数如 useLegacyDatetimeCodefalse 和 useSSLfalse 等。这些参数可以根据你的具体需求进行配置。 总的来说是否指定 serverTimezoneUTC 取决于你的具体应用场景和需求。如果你不确定是否需要它或者你的应用程序可能会受到时区问题的影响那么建议添加这个参数以确保时间戳的正确处理。 6、访问数据库 数据库连接被用于向数据库服务器发送命令和SQL语句在连接建立后需要对数据库进行访问执行SQL语句。在java.sql包中提供了3个接口分别定义了对数据库调用的不同方式分别是Statement、PreparedStatement、CallableStatement。 1Statement 调用Connnect对象的createStatement方法创建一个Statement对象。Statement对象用于执行静态的SQL语句返回执行的结果。在Connection接口中定义了createStatement()方法如下 Statement createStatement() throws SQLException常用来执行没有参数的SQL语句。 Statement接口中定义了如下的方法执行SQL语句 ResultSet executeQuery(String sql) throws SQLException该方法执行参数sql指定的SQL语句返回一个ResultSet对象。ResultSet对象用于查看执行的结果。int exceuteUpdate(String sql) throws SQLException该方法执行参数sql指定的insert 、update或delete语句。该方法也可以用来执行SQL DDL 语句必须创建表。boolean execute(String sql) throws SQLException该方法执行返回多个结果集的SQL语句。在某些情况下一条SQL语句可以返回多个结果集或者更新行数。在通常情况下不使用这个方法。除非要执行返回多个结果集的存储过程或者动态执行一个未知的SQL串。如果使用该方法就必须使用getResultSet()或者getUpdateCount()方法获取结果并且调用getMoreResults()方法来访问下一个结果集。如果返回的第一个结果是一个ResultSet对象那么这个方法返回的是true如果返回的是一个更新的行数或者没有结果那么返回的是falseint[] executeBatch() throws SQLException该方法允许向数据库提交一批命令然后一起执行。如果所有的命令都成功执行那么返回值是一个更新行数的数组。数组中的每一个int元素都是按照加入命令的先后顺序来存储的表示了相应命令的更新行数。可以使用addBatch()方法将SQL命令加入到命令列表中。 2PreparedStatement 在程序中传递的SQL语句在执行前需要被预先编译包括语句分析、代码优化等然后才能被数据库引擎执行。如果重复执行只有参数不同的SQL语句则程序效率会比较低。这就是PreparedStatement使用比Statement多的原因。 如果要用不同的参数来多次执行同一个SQL语句推荐使用PreparedStatement对象。PreparedStatement接口是继承Statement接口它的对象表示一条预编译过的SQL语句。PreparedStatement对象所代表的SQL语句中的参数使用问号来表示调用PreparedStatement对象的setXxx方法来设置这些参数。setXxx方法有两个参数第一个参数是要设置SQL语句中的参数索引从1开始第二个参数是要设置的SQL语句中的参数的值。 conn DriverManager.getConnection(url,user,password); Statement stmt conn.createStatement(); stmt.executeUpdate(create table emp(id,INT,name VARCHAR(10),hiredate DATE);PreparedStatement pstmt conn.prepareStatement(insert emp(?,?,?));pstmt.setInt(1,1); pstmt.setString(2,liuzx); pstmt.setDate(3,java.sql.Date.valueOf(2005-3-3)); pstmt.executeUpdate();pstmt.setInt(1,2); pstmt.setString(2,renrui); pstmt.setDate(3,java.sql.Date.valueOf(1976-9-19)); pstmt.executeUpdate(); 针对不同类型的参数需要使用对应的setXxx方法尤其对应数据库日期类型的Java类型是java.sql.Date而不是java.util.Date虽然java.sql.Date是java.util.Date的子类MySQL数据库中的数据类型与Java中的数据类型有一定的对应关系需要注意。 3ResultSet ResultSet对象以逻辑表格的形式封装了执行数据库操作的结果集ResultSet对象维护了一个指向当前数据行的游标在初始的时候游标在第一行之前调用ResultSet对象的next方法移动到游标的第一行next方法移动到游标的下一行如果新的数据行有效有数据则返回true否则返回false。通过判断这个方法的返回值可以循环读取结果集中的数据库直到最后。 该方法如下 boolean next() throws SQLException 在ResultSet接口中定义了很多方法来获取当前行中列的数据根据表中字段类型的不同采用不同的方法来获取数据。如getBoolean()、getInt()、getLong()、getString()、getDate()等。 在上面这些方法中提供了两种形式的调用一种是以列的索引作为参数索引值从1开始另一种是以列的名字作为参数。例如对于getString()方法有下面两种形式 String getString(int columnIndex) throws SQLExceptionString getString(String columnName) throws SQLException 如果不知道要获取的列数据的类型则可以一律采用getString(方法来得到一个String类型的数据。 3.1对于要遍历结果集ResultSet利用ResultSet对象的next方法循环取出每行的数据。需要注意的是在ResultSet对象初始化的时候ResultSet对象的游标指向第一行之前所以需要先调用一次next方法通常在while循环的条件判断中调用将游标移动到第一行读取最后一行后再次执行next方法则返回falsewhile循环也就结束完成了ResultSet结果集的遍历从第一行到最后一行。 try(rs) {while(rs.next()) {System.out.print(rs.getString(title) \t);System.out.print(rs.getString(author) \t);System.out.print(rs.getFloat(price) \t);System.out.println();} } 在Java中当你看到try后面直接跟着一对圆括号并包含一个或多个对象时这通常是Java 7引入的“try-with-resources”语句的用法。这个特性主要用于自动管理实现了AutoCloseable或Closeable接口的资源如数据库连接、文件流等确保在try块执行完毕后这些资源能够被正确地关闭即使发生异常也是如此。 AutoCloseable接口是java.lang包中的一个标记接口它定义了一个close()方法用于释放资源。任何实现了这个接口的对象都可以用在try-with-resources语句中。 在上面的代码中当try块执行完毕后rs对象的close()方法会自动被调用无论是否发生了异常。这使得资源的管理更加简洁和安全避免了因为忘记关闭资源而导致的潜在问题如内存泄漏或文件句柄泄漏等。 这种结构特别适用于那些需要在finally块中关闭的资源因为它自动处理了资源的关闭逻辑使得代码更加清晰和易于维护。 3.3多个条件的SQL语句在应用中动态构造查询语句往往可能需要多个不同条件因此需要进行判断并在程序中拼接and条件可是while子句后的第一个条件是没有and关键字的所以往往做法是判断是否有一个条件了后面才好拼接“and”字符串。为了避免复杂的if判断通常做法是在where子句后附加一个恒等条件11这样就简化了条件的字符串拼接只要某个条件存在就统一拼接and  fieldvalue例如 StringBuffer sb new StringBuffer(select * from bookinfo where 11); // and前有一个空格 sb.append( and title title); sb.append( and author authoor);ResultSet rs stmt.executeQuery(sb.toString());
http://www.pierceye.com/news/519592/

相关文章:

  • 中国建设部网站能查叉车证wordpress预览
  • 域名申请网页制作网站建设和外国人做古玩生意的网站
  • win7用自己ip做网站邯郸营销型网站建设
  • 织梦免费网站模块下载地址加强网站建设技术培训
  • 网站源码商城建设成都建站优化
  • 网站销售如何做业绩狗狗和人做网站
  • dede 手机站 怎么获取跳转网站安卓软件开发环境
  • 个人网站做什么类型好中国网络安全官网
  • 怎样优化网站排名上传到服务器的网站打开是空白
  • 我的世界做皮肤网站企业网站风格
  • 京东网站建设的基本情况做哪类网站赚钱
  • 淘宝上网站建设续费个人网站做什么类型的
  • 牙克石网站建设wordpress 跳过ftp
  • 中国建设银行官网站e路通下载店铺设计图纸及效果图大全
  • 福州网站推广公司烟台网络公司有哪些
  • 福建省建设注册管理中心网站那些做面点的网站好
  • 天津网站建设方案托管wordpress 批量删除
  • 网站后台管理系统域名在线设计房屋装修
  • 郑州网站建设工作室wordpress 编辑器字号
  • 内容聚合网站开发教程WordPress文章首页缩进
  • saas云建站平台源码新冠2024中国又要封城了
  • 济南网站建设认可搜点网络滨州网站建设
  • 政务公开及网站建设意见网站的策划方案怎么写
  • 网站培训制度郑州建网站哪个公司好
  • 网站建设优化怎么做微信公众平台开发网站
  • 网站建设的什么是网站建设的第一阶段公司简介概况怎么写
  • 玛伊网站做兼职加入要多少钱装修房子的app软件哪个好
  • 免费空间asp网站公众号编辑器排行榜
  • 鲜花培训网站建设网站建设技术部奖惩制度
  • 国内优秀设计网站站长营销型网站建设 案例