`
cuisuqiang
  • 浏览: 3962809 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3672173
社区版块
存档分类
最新评论

使用JDBC查询是否存在某表或视图,按月动态生成表

    博客分类:
  • J2EE
阅读更多

查询数据库是否有某表的存在,主要用的就是Connection对象对元数据的操作,代码很简单,贴出来大家参考

 

/**
 * 查询数据库是否有某表
 * @param cnn
 * @param tableName
 * @return
 * @throws Exception
 */
@SuppressWarnings("unchecked")
public boolean getAllTableName(String tableName) throws Exception {
	Connection conn = jdbcTemplate.getDataSource().getConnection();
	ResultSet tabs = null;
	try {
		DatabaseMetaData dbMetaData = conn.getMetaData();
		String[]   types   =   { "TABLE" };
		tabs = dbMetaData.getTables(null, null, tableName, types);
		if (tabs.next()) {
			return true;
		}
	} catch (Exception e) {
		e.printStackTrace();
	}finally{
		tabs.close();
		conn.close();
	}
	return false;
}

 

然后判断是有某表,如果没有,调用创建

/**
 * 根据表名称创建一张表
 * @param tableName
 */
public int createTable(String tableName){
	StringBuffer sb = new StringBuffer("");
	sb.append("CREATE TABLE `" + tableName + "` (");
	sb.append("`id`  int(11) NOT NULL AUTO_INCREMENT ,");
	sb.append("`alertId`  int(11) NULL DEFAULT NULL ,");
	sb.append("`alertTime`  int(11) NULL DEFAULT NULL ,");
	sb.append("`alertLevel`  int(11) NULL DEFAULT NULL ,");
	sb.append("`deviceMark`  int(11) NULL DEFAULT NULL ,");
	sb.append("`carNo`  int(11) NULL DEFAULT NULL ,");
	sb.append("`updateTime`  varchar(255) DEFAULT NULL ,");
	sb.append("PRIMARY KEY (`id`)");
	sb.append(") CHARACTER SET=utf8 COLLATE=utf8_general_ci;");
	try {
		jdbcTemplate.update(sb.toString());
		return 1;
	} catch (Exception e) {
		e.printStackTrace();
	}
	return 0;
}

 

这两个方法可以公用,至于是按月还是按天还是按周,取决于你对表名称的生成

/**
 * 保存
 */
@Override
public int saveAlertMessLog(AlertMessLog alertMessLog) {
	SimpleDateFormat format = new SimpleDateFormat("yyyy_MM");
	String tableName = "nm_alertmesslog_" + format.format(new Date());
	try {
		boolean isHave = getAllTableName(tableName);
		if(isHave){
			return saveObject(alertMessLog,tableName);
		}else{
			if(createTable(tableName) == 1){
				return saveObject(alertMessLog,tableName);
			}
		}
	} catch (Exception e) {
		e.printStackTrace();
	}		
	return 0;
}

 

我的格式化方法决定了是按照月来进行生成,如果有直接保存,如果没有,先生成再保存!

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

分享到:
评论
4 楼 cuisuqiang 2014-07-24  
lord_is_layuping 写道
有用,赞一个

3 楼 lord_is_layuping 2014-07-24  
有用,赞一个
2 楼 hngmduyi 2012-12-24  
1 楼 hngmduyi 2012-07-20  
有用,赞一个

相关推荐

    java根据数据库表或视图创建实体

    10. **使用流程**:用户需要先配置数据库连接信息,然后输入表或视图名,最后运行工具生成实体类。生成的代码可以直接复制到Java项目中,进行后续的开发工作。 这个"java根据数据库表或视图创建实体"的小工具,无疑...

    MyEclipse使用JDBC查询数据库(MVC模式)

    MyEclipse使用JDBC查询数据库(MVC模式) 本资源主要介绍了使用MyEclipse实现对MySQL数据库的连接和查询,采用JavaBean、Servlet、JSP模式,使用EL表达式和JSTL标签库。下面将对标题、描述、标签和部分内容进行详细...

    通过MSQL通过视图访问ORACLE中的表

    视图是一种虚拟表,它不实际存储数据,而是根据用户定义的SQL查询动态生成结果集。这使得我们可以在MySQL环境中对Oracle数据进行查询,而无需直接在Oracle上执行SQL语句。 步骤如下: 1. **配置数据源**:在MySQL...

    java动态生成表的增删改查

    如果需要动态生成表,可能需要在Service或DAO中添加相应的逻辑,根据用户输入或配置信息动态构造SQL语句,创建或更新数据库表结构。这通常涉及对数据库元数据的查询,以及对DDL(Data Definition Language)语句的...

    Struts2 JDBC 增删改查

    在前端,通常会使用JSP(JavaServer Pages)或FreeMarker模板来渲染视图。这些页面会显示表单供用户输入数据,提交表单时将触发Struts2的动作调用。同时,页面也会展示查询结果,允许用户进行编辑、删除等操作。 总...

    JAVA 动态生成实体类.rar

    在Java开发中,动态生成实体类是一项常见的需求,特别是在数据驱动的应用程序中。实体类是与数据库表对应的一种数据模型,用于封装数据操作。当数据库结构发生变化时,手动修改对应的实体类会变得繁琐且易出错。这个...

    JSP之JDBC数据库开发

    JSP是一种基于Java的服务器端脚本语言,用于生成动态网页内容,而JDBC是Java平台中用于连接数据库的标准接口。 在【实验目的】中,学习者需要复习数据库操作的基础知识,并通过JDBC实践数据库的增删改查(CRUD)...

    代码生成器,依据表动态生成代码

    本系统称为“代码生成器,依据表动态生成代码”,它的核心功能是根据数据库中的表结构信息自动生成相应的代码文件,如jsp、js、java和sql。这主要涉及到以下几个方面的知识点: 1. **数据库设计**:首先,数据库的...

    java jdbc宠物商店

    JSP(JavaServer Pages)是Java Web开发中的视图层技术,它允许在HTML代码中嵌入Java代码,实现动态网页的生成。在这个项目中,JSP将用于构建用户界面,处理用户请求,展示宠物信息,以及处理用户提交的表单数据。 ...

    Mysql视图工具(Navicat for MySQL)

    视图在数据库中是一个虚拟表,它不存储任何数据,而是根据查询语句动态生成数据。Navicat for MySQL允许用户创建和管理视图,这对于简化复杂的查询、保护敏感数据以及提供不同的数据视角非常有用。视图可以基于一个...

    struts2+jdbc+jsp增删改查

    在本项目"struts2+jdbc+jsp增删改查"中,开发者使用了Struts2来处理用户请求,通过JDBC(Java Database Connectivity)进行数据库操作,而JSP(JavaServer Pages)则作为视图层,显示数据。这个项目的核心在于实现对...

    servlet+jdbc+mysql+ajax的注册,登陆,修改,查询项目

    4. **JSP(JavaServer Pages)**:JSP是Java Web开发中的视图层技术,它将HTML代码与Java代码结合在一起,允许动态生成网页内容。在这个项目中,JSP文件通常包含HTML结构,以及内嵌的Java表达式或脚本块,用于显示...

    mysql、oracle 等数据字典生成工具

    配置完成后,工具会通过JDBC连接到指定的数据库,执行相应的SQL查询来获取表结构和元数据。然后,它将这些信息整理成易于理解的数据字典格式,可能包括以下内容: 1. **表信息**:表名、表注释、创建时间等。 2. **...

    SpringMVC实现动态加表及字段并显示数据

    使用SpringMVC的ModelAndView,我们可以将后端数据绑定到视图模板,如JSP或Thymeleaf,生成动态的表单元素。JavaScript,如jQuery或Vue.js,可以实现动态交互,如表单验证、异步提交等。在前端展示数据时,可以通过...

    jsp+mysql+servlet动态tree生成简单Demo

    本示例“jsp+mysql+servlet动态tree生成简单Demo”结合了Java Web开发中的三大核心技术:JSP(JavaServer Pages)、MySQL数据库和Servlet,为我们提供了一个动态生成树形结构的完整实例。以下将详细介绍这些技术及其...

    BBS系统JSP+JDBC

    【标题】"BBS系统JSP+JDBC"是一个基于Web的在线论坛系统,它利用了Java Server Pages(JSP)技术与Java Database Connectivity(JDBC)接口来实现与数据库的交互。这样的组合使得开发者能够方便地创建动态网页,同时...

    jsp+jdbc 留言板

    这个系统主要使用了Java Server Pages(JSP)作为视图层,Java Database Connectivity(JDBC)作为数据库连接工具,实现了数据的存储和读取功能。下面我们将详细探讨这两个关键技术和在此项目中的具体应用。 **Java...

    自动生成 能够自动生成 对表操作的jsp 页面

    对于表的增删改查操作,我们需要使用PreparedStatement或Statement对象来构建和执行SQL。 【核心知识点3】:JavaScript和onClick事件 onClick事件是JavaScript中的一个事件,当用户点击元素时触发。在JSP页面中,...

    java仓库JDBC和web

    使用JDBC,开发者需要先加载数据库驱动,建立数据库连接,然后创建Statement或PreparedStatement对象来执行SQL,最后关闭连接。JDBC的使用大大简化了数据库编程,但也需要注意资源管理和异常处理。 Web开发方面,...

    JSP与JDBC应用详解

    **JSP(Java Server Pages)与JDBC(Java Database Connectivity)是Java开发中用于构建动态网页和处理数据库交互的核心技术。** **JSP技术** 是Java EE平台的一部分,主要用于创建动态网页。它允许开发者将静态...

Global site tag (gtag.js) - Google Analytics