import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
public class Main {
public static void main(String[] args) throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ParameterMetaData paramMetaData = null;
conn = getMySqlConnection();
pstmt = conn.prepareStatement("select * from survey where id = ?");
/**
* 重点:获取参数个数,可以通过传入数据,迭代替换占位符的方法
*/
paramMetaData pmd = pstmt.getParameterMetaData();
if (paramMetaData == null) {
System.out.println("db vendor does NOT support ParameterMetaData");
} else {
System.out.println("db vendor supports ParameterMetaData");
// find out the number of dynamic parameters
int paramCount = pmd.getParameterCount();
for(int i=0;i<=paramCount;i++)
{
pmd.getParameterClassName( index ) //获得JAVA中的类型名,如打印出java.lang.String
pmd.getParameterType( index ) //获得类型号,比如打印出 12 ,代表VARCHAR类型
pmd.getParameterTypeName( index ) //获得数据库中的类型名,如打印出VARCHAR
//这些方法需要依赖于数据库的JDBC是否支持,如MYSQL就不支持,都只会打印出VARCHAR类型的值
}
System.out.println("paramCount=" + paramCount);
}
pstmt.close();
conn.close();
}
private static Connection getHSQLConnection() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
System.out.println("Driver Loaded.");
String url = "jdbc:hsqldb:data/tutorial";
return DriverManager.getConnection(url, "sa", "");
}
public static Connection getMySqlConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/demo2s";
String username = "oost";
String password = "oost";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
public static Connection getOracleConnection() throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:caspian";
String username = "mp";
String password = "mp2";
Class.forName(driver); // load Oracle driver
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
}
分享到:
相关推荐
本示例将详细介绍如何使用JDBC连接到PostgreSQL数据库并执行简单的数据获取操作。PostgreSQL是一种开源的对象关系型数据库管理系统,因其强大的功能和稳定性而广受欢迎。 首先,确保已安装PostgreSQL数据库并在系统...
- **DatabaseMetaData**:提供关于数据库的元数据信息。 ### SQL操作 JDBC支持的基本SQL操作包括: - 查询:`SELECT`语句。 - 插入:`INSERT INTO`语句。 - 更新:`UPDATE`语句。 - 删除:`DELETE FROM`语句。 - ...
JDBC 元数据是 JDBC 的一个重要组件,用于提供数据库的元数据信息。元数据包括数据库的 schema 信息、表信息、字段信息等。 元数据 Meta Data 元数据 Meta Data 是元数据的核心组件之一,提供了数据库的 schema ...
`META-INF`目录通常包含项目元数据,`com`是Java源代码包,可能包含了封装的JDBC操作类。`lib`目录可能包含JDBC驱动和其他依赖库。 6. **最佳实践** 在实际开发中,可以进一步优化封装,例如使用DAO(Data Access ...
- `DatabaseMetaData` 类提供了关于数据库的各种元数据信息,例如获取所有表名、列信息、索引信息等。通过调用 `Connection` 对象的 `getMetaData()` 方法获取元数据实例,然后通过这个实例可以查询到数据库的详细...
- **JDBC批注**:用于元数据查询,如`DatabaseMetaData`接口。 - **结果集元数据**:`ResultSetMetaData`对象提供列的相关信息。 - **JDBC逃逸**:防止SQL注入的编码技术。 ### 10. 示例代码 ```java Class.for...
一旦获取了MetaData信息,应将其缓存起来,避免重复执行可能导致复杂查询的元数据获取操作。例如,程序可以一次性调用getTypeInfo方法,然后缓存返回的结果,而不是在需要时反复调用。 其次,避免在MetaData方法中...
查询结果将通过ResultSet对象返回,并可以使用ResultSetMetaData对象获取结果集的元数据信息。最后,使用JTable组件显示结果集,从而实现查询数据的可视化展示。 在此过程中,catch块用于捕获并处理可能出现的异常...
JDBC与数据库的元数据 通过Connection对象的`getMetaData()`方法可以获得关于数据库的信息,如表结构、列信息等,这对于数据库迁移或自动化工具非常有用。 ### 8. 避免SQL注入 PreparedStatement的参数化特性可...
它们提供了丰富的功能,如批处理、结果集滚动、元数据查询等。同时,JDBC还支持JNDI(Java Naming and Directory Interface)查找数据源,使得在分布式环境中更容易管理数据库连接。 总的来说,JDBC是Java开发人员...
- 数据库元数据:`DatabaseMetaData`对象提供了数据库的各种元数据,如表信息、列信息、数据库产品版本等。常见的方法有`getCatalogs()`、`getURL()`、`getDriverName()`和`getColumns()`等。 4. 示例程序 一个...
2. **注解驱动的元数据获取**:利用Java Reflection API,可以通过注解获取表和列的信息,简化了元数据的处理。 3. **新接口和方法**:引入了`ConnectionPoolDataSource`、`PooledConnection`和`XATransaction`等...
5. **Connection的元数据查询**:`DatabaseMetaData`接口新增了一些方法,如`getClientInfoProperties()`,使得开发者能够获取关于数据库连接的元数据信息,包括支持的客户端信息属性等。 6. **SQLXML类型**:JDBC ...
9. **数据库元数据**:Connection对象的getMetaData()方法可以获取数据库的元数据,如表名、列名、数据类型等,有助于动态构建SQL语句。 10. **预编译SQL**:PreparedStatement中的预编译SQL可以提高执行效率,防止...
JDBC提供了获取数据库和参数元数据的机制,有助于理解数据库结构和优化查询。 #### 十一、批处理的使用 批处理允许一次性执行多条SQL语句,减少了网络往返次数,提高了批量数据处理的效率。 #### 十二、JDBC其他...
4. **数据库元数据**: `DatabaseMetaData`对象提供了关于数据库的结构和能力的信息,如获取表信息、列信息等。 **三、JDBC最佳实践** 1. **连接池**: 使用连接池(如C3P0、HikariCP、Apache DBCP)管理数据库连接,...
JDBC4对元数据API进行了统一,使得获取表信息、列信息、索引信息等变得更加标准化,降低了不同数据库间的差异。 5. **批处理改进** 批处理操作现在支持动态参数,可以更灵活地处理不同类型的参数,提升了批处理的...
7. **元数据查询**:获取关于表、列、索引等信息,帮助构建和优化查询。 8. **游标处理**:利用`ResultSet`的游标功能,按需获取数据,降低内存消耗。 9. **性能优化**:通过设置JDBC连接参数,如缓冲大小、并发...
- **获取方式**:使用`ParameterMetaData`接口获取参数元数据。 #### 二十四、利用结果集元数据将查询结果封装为Map - **实现方式**: - 使用`ResultSetMetaData`获取结果集的列信息。 - 通过`getColumnLabel()`...