JDBC系列教程之十二:DatabaseMetaData(数据库的元数据信息)和ParameterMetaData(参数的元数据信息)

2019-03-28 00:16|来源: 领悟书生

DatabaseMetaData(数据库的元数据信息)和ParameterMetaData(参数的元数据信息)

l  DatabaseMetaData meta = connection.getMetaData();

l  通过DatabaseMetaData可以获得数据库相关的信息如:数据库版本、数据库名、数据库厂商信息、是否支持事务、是否支持某种事务隔离级别,是否支持滚动结果集等。

DBMD.java

package com.hyneng.jdbc;

import java.sql.DatabaseMetaData;

import java.sql.SQLException;

/**

* 2010-10-08

* @author HuangYineng

*/

public class DBMD {

   public static void main(String[] args) throws  SQLException {

      java.sql.Connection conn = JdbcUtils.getConnection();

      DatabaseMetaData dbmd =  conn.getMetaData();

      System.out.println("db name: " +  dbmd.getDatabaseProductName());

      System.out.println("tx: " + dbmd.supportsTransactions());

      conn.close();

   }

}

l  ParameterMetaData pmd =     preparedStatement.getParameterMetaData();

l  通过ParameterMetaData可以获得参数信息。

ParameterMetaTest.java

package com.hyneng.jdbc;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

/**

* 2010-10-08

* @author HuangYineng

*/

public class ParameterMetaTest {

   public static void main(String[] args) throws  SQLException {

      Object[] params = new Object[] { "hyneng",75f };

      read("select * from user where name=? and  money > ?", params);

   }

   static void read(String sql, Object[]  params) throws SQLException {

      Connection conn = null;

      PreparedStatement ps = null;

      ResultSet rs = null;

      try {

          conn = JdbcUtils.getConnection();

          ps = conn.prepareStatement(sql);

//         ParameterMetaData pmd =  ps.getParameterMetaData();

//         int count = pmd.getParameterCount();

          for (int i = 1; i <= params.length; i++) {

          // System.out.print(pmd.getParameterClassName(i) + "\t");

          // System.out.print(pmd.getParameterType(i) + "\t");

          // System.out.println(pmd.getParameterTypeName(i));

             ps.setObject(i, params[i - 1]);

          }

          rs = ps.executeQuery();

          while (rs.next()) {

             System.out.println(rs.getInt("id") + "\t"

                 + rs.getString("name") + "\t" + rs.getDate("birthday")

                 + "\t" + rs.getFloat("money"));

          }

      } finally {

          JdbcUtils.free(rs, ps,  conn);

      }

   }

}


本文链接:JDBC系列教程之十二:DatabaseMetaData(数据库的元数据信息)和ParameterMetaData(参数的元数据信息),转自请注明:http://www.656463.com/article/816

相关问答

更多

如何在给出字符串的开始和结束部分时使用正则表达式提取字符串的一部分(How to extract a part of a string using regex, when starting and ending portion of the string is given)

这是sed的正则表达式: "sed -i 's,/home/portweb/software/nodejs/\(.*\)/bin,/home/portweb/software/nodejs/'" + nodeversion + "'/bin,g'" 请注意,您可以使用除/之外的分隔符以便于识别,所以我们在这里使用, Here is the regex for sed: "sed -i 's,/home/portweb/software/nodejs/\(.*\)/bin,/home/portw

Python:Spyder在未停靠的编辑器窗口和spyder控制台之间切换(Python: Spyder switching between undocked editor window and spyder console)

( Spyder维护者在这里 )你需要去编辑器右边的小齿轮菜单,并选择新窗口选项来获得一个合适的窗口。 这将在Spyder 4中得到改进,允许我们所有的窗格在未连接时生成一个新窗口(注意:这已经在Spyder master分支中实现,以防您想尝试)。 (Spyder maintainer here) You need to go to the little cog menu on the right of the Editor and select the option New window t

在golang中重新定义const以进行测试(Redefine const in golang for test)

如果您的代码使用const值,则它不是测试友好的 (关于使用该参数的不同值进行测试)。 您可以通过轻微的重构来解决您的问题。 假设你有一个使用这个const的函数: const baseUrl = "http://google.com" func MyFunc() string { // use baseUrl } 您可以创建另一个将基本URL作为参数的函数,并且您的原始MyFunc()调用此函数: const baseUrl_ = "http://google.com" func

带有DRF的Django过滤器 - 如何在'和'时使用相同的查找应用多个值?(Django-filter with DRF - How to do 'and' when applying multiple values with the same lookup?)

主要的问题是你需要一个能够理解如何在多个值上操作的过滤器。 基本上有两种选择: 使用MultipleChoiceFilter (不推荐用于此实例) 编写自定义过滤器类 使用MultipleChoiceFilter class BookmarkFilter(django_filters.FilterSet): title__contains = django_filters.MultipleChoiceFilter( name='title', lookup

增加Visual Studio中的调试项目数(Increase debug item count in Visual Studio)

您可以编写自定义调试可视化工具来执行此操作。 You can write a custom debug visualizer to do this.
java8新特征详解
java文件操作专题教程
JAVA概述
第一部分:java入门基础
第二部分:java常用类
第三部分:jdbc系列教程
第四部分:java高级特征

相关文章

更多

最近更新

更多