import java.io.IOException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
public class Jdbc {
// 数据库连接地址
private static final String url = "jdbc:mysql://localhost:3306/st";
// 用户名密码
private static final String user = "root";
private static final String pwd = "";
/***
* 数据库查询
*
* @throws ClassNotFoundException
* @throws IOException
*/
public static void query() throws ClassNotFoundException, IOException {
Connection conn = null;
java.sql.PreparedStatement pst = null;
ResultSet re = null;
/*
* DBC提供了DatabaseMetaData来封装数据库连接对应的数据库信息,
* 通过Connection的getMetaData方法来获取该对象。
* DatabaseMetaData接口通常数据库驱动提供商完成实现,其作用是让用户了解数据库的底层信息。
* 使用该接口可以了解数据库底层的实现,便于完成多个数据库的相互切换。
*/
DatabaseMetaData metadata = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, pwd);
metadata = conn.getMetaData();
System.out.println("数据库已知的用户: " + metadata.getUserName());
System.out.println("数据库的系统函数的逗号分隔列表: " + metadata.getSystemFunctions());
System.out.println("数据库的时间和日期函数的逗号分隔列表: " + metadata.getTimeDateFunctions());
System.out.println("数据库的字符串函数的逗号分隔列表: " + metadata.getStringFunctions());
System.out.println("数据库供应商用于 'schema' 的首选术语: " + metadata.getSchemaTerm());
System.out.println("数据库URL: " + metadata.getURL());
System.out.println("是否允许只读:" + metadata.isReadOnly());
System.out.println("数据库的产品名称:" + metadata.getDatabaseProductName());
System.out.println("数据库的版本:" + metadata.getDatabaseProductVersion());
System.out.println("驱动程序的名称:" + metadata.getDriverName());
System.out.println("驱动程序的版本:" + metadata.getDriverVersion());
System.out.println("驱动程序的版本:" + metadata.getTableTypes());
System.out.println("............................................");
pst = conn.prepareStatement("select * from company_basic");
// 获取数据库列
re = pst.executeQuery();
// 数据库列名
ResultSetMetaData data = re.getMetaData();
// getColumnCount 获取表列个数
for (int i = 1; i <= data.getColumnCount(); i++) {
// 获取列表 index 从1开始、列名、列类型、列的数据长度
System.out.println(data.getColumnName(i) + "\t" + data.getColumnTypeName(i) + "\t"
+ data.getColumnDisplaySize(i) + "\t" + data.getColumnClassName(i));
}
ResultSet resultSet = metadata.getTables(null, "%", "%", new String[] { "TABLE" });
/*
* while (resultSet.next()) { String
* tableName=resultSet.getString("TABLE_NAME"); ResultSet rs =
* metadata.getColumns(null, "%", tableName, "%");
* System.out.println("表名:"+tableName+"\t\n表字段信息:");
* while(rs.next()){
* System.out.println("字段名:"+rs.getString("COLUMN_NAME")+"\t字段注释:"+
* rs.getString("REMARKS")+"\t字段数据类型:"+rs.getString("TYPE_NAME")); }
* }
*/
ResultSet rs = metadata.getColumns(null, "%", "company_basic", "%");
System.out.println("表名:" + "company_basic" + "\t\n表字段信息:");
while (rs.next()) {
System.out.println("字段名:" + rs.getString("COLUMN_NAME") + "\t字段注释:" + rs.getString("REMARKS")
+ "\t字段数据类型:" + rs.getString("TYPE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConnection(conn, pst, re);
}
}
/**
* 关闭数据库链接
*
* @param conn
* @param pst
* @param re
*/
public static void closeConnection(Connection conn, PreparedStatement pst, ResultSet re) {
if (conn != null)
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (pst != null)
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (re != null)
try {
re.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
try {
query();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
元数据 Meta Data 是元数据的核心组件之一,提供了数据库的 schema 信息、表信息、字段信息等。 数据库的元数据 数据库的元数据是元数据的核心组件之一,提供了数据库的 schema 信息、表信息、字段信息等。 结果...
此外,如果SQLJDBC4驱动遵循Java的Service Provider Interface (SPI)机制,那么在META-INF下可能还会找到services子目录,其中的文件会列出该驱动作为JDBC驱动提供商的声明。 总的来说,通过分析sqljdbc4的源码,...
元数据(Meta-data) JDBC允许我们获取关于数据库、表、列等的信息,例如表的结构、列的数据类型等,这些信息可以通过`DatabaseMetaData`接口获取。 ### 4. 异常处理 在JDBC编程中,常见的异常包括`SQLException`...
`META-INF`目录通常包含项目元数据,`com`是Java源代码包,可能包含了封装的JDBC操作类。`lib`目录可能包含JDBC驱动和其他依赖库。 6. **最佳实践** 在实际开发中,可以进一步优化封装,例如使用DAO(Data Access ...
JDBC是构建在Java平台之上的数据库访问基石,许多其他的持久层技术,如JDO(Java Data Object)、Hibernate和MyBatis等,都是基于JDBC进行了更高级别的封装。 **JDBC主要知识点:** 1. **JDBC API**: JDBC API包括...
jdbc(Java Data Base Connectivity)是一种Java API,用于连接和操作关系型数据库。jdbc 的本质是官方定义的一套操作所有关系型数据库的规则,即接口(API),各个数据库厂商去实现这个接口,提供数据库驱动 jar 包...
JDBC作为Java数据库访问的基础,为上层的数据库访问技术如JDO(Java Data Object)和ORM(Object-Relational Mapping)工具,如Hibernate和Mybatis,提供了底层支持。通过JDBC,开发者可以编写与数据库无关的代码,...
sharding.jdbc.config.masterslave.master-data-source-name=ds_master sharding.jdbc.config.masterslave.slave-data-source-names=ds_slave ``` 在上面的配置中,我们定义了两个数据源:ds_master 和 ds_slave,...
- **Data Source URL**:例如`jdbc:mysql://192.168.0.16/SUBRDB`,其中`192.168.0.16`是MySQL服务器的IP地址,`SUBRDB`是数据库名。 - **JDBC Driver Class**:例如`org.gjt.mm.mysql.Driver`,这是MySQL的JDBC...
### JSP+JDBC 实现连接数据库的...在实际开发中,为了提高安全性和可维护性,通常会采用更高级的技术和框架,例如Spring框架中的Spring Data JPA等。此外,对于敏感信息的处理,还需要采取加密等措施来保障数据的安全。
这个DEMO项目中的`META-INF`和`WEB-INF`目录通常是Web应用的标准结构,`META-INF`包含应用元数据,如MANIFEST.MF文件,`WEB-INF`则包含了Web应用的配置文件和库文件。在Spring Boot应用中,这些目录的使用可能并不...
假设我们创建一个与`users`表对应的HBase表,名为`user_data`,包含两个列族:`info`和`meta`,分别对应MySQL中的`name`和`email`字段。HBase创建表的Java代码可能如下: ```java import org.apache.hadoop.hbase....
在Java应用中,JDBC是连接业务逻辑(BDD,Business Data Logic)和数据库之间的重要桥梁。本资源包将详细介绍如何利用JDBC进行数据库操作,包括连接、SQL注入、处理结果集以及获取元数据等关键步骤。 首先,要建立...
- 修改`META-INF/MANIFEST.MF`文件,将JDBC驱动Jar文件加入插件的classpath中。 - 导出JDBC驱动程序所需的类名,并添加依赖的其他插件。 - 例如,对于Derby数据库,导出`com.ibm.xsp.extlib.relational.derby`等...
<data-source id="jdbc/real" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName">com.mysql.jdbc.Driver</property> <property name="url">jdbc:mysql://localhost:3306/test ...
3. **配置JNDI数据源**:在`JBOSS_HOME/server/default/deploy/jboss-service.xml`或应用特定的配置文件(如`META-INF/jboss-service.xml`)中,定义JNDI数据源。例如: ```xml <datasources> <jndi-name>java:...
为了实现高效且可扩展的数据库连接管理,最佳实践通常建议使用J2EE数据源(Data Source)来提供连接池服务。然而,在配置数据源并将其与应用程序关联起来的过程中,往往面临着繁琐且易错的操作,尤其是在不同Web...
`META-INF`目录通常是Java应用中的元数据目录,包含如MANIFEST.MF文件,用于描述JAR包的信息,但在这个场景下未提供具体文件,所以无法给出更多细节。在实际项目中,它可能包含Hibernate的映射文件或者自定义的实体...
在`my_core/conf`下创建`data-config.xml`,定义数据源和要索引的表: ```xml <dataConfig> <dataSource type="JdbcDataSource" name="jdbc:mysql"/> <entity name="your_table" dataSource="jdbc:mysql" query...
通过JDBC,工具能够获取数据库表的元数据,包括表名、字段名、字段类型等,从而构建出Entity类的字段和DAO接口的方法。 Java Bean(Entity)是Java中一种设计模式,用于封装业务数据。在本工具中,每个数据库表通常...