工作中,有的存储过程里调用:
INSERT IGNORE INTO `box_phone_warning_imei` SELECT * FROM `box_log`.`box_local_phone_log` WHERE id <> v_id and imei = v_group and (mac <> v_group2 or createTime<>v_group3);
现在为了用table里的字段名 替换* ,达到下面的结果,以避免box_phone_warning_imei和box_local_phone_log字段不一致时导致数据拷贝失败。 INSERT IGNORE INTO `box_phone_warning_imei` SELECT id,imei,mac,phoneNum,phoneModel,phoneVendor,appSuccessNum,appSuccessIds,appSuccessNames,appFalseNum,appFalseIds,appFalseNames,boxId,channelId,fatherChannelId,province,city,createTime,updateTime,statType,success,errorMsg,albumId,address,realIp FROM `box_log`.`box_local_phone_log` WHERE id <> v_id and imei = v_group and (mac <> v_group2 or createTime<>v_group3);
面对以上这么简单的需求不可能手动去,数据表里一个字段一个字段的copy下来组合成一个string吧,这样体力活不应该是猿人干的。用jdbc来帮忙吧。
package jdbc.test; import java.sql.*; /** * @author jone * */ public class JDBCDemo { static String user = "root"; static String password = "88888888"; static String url = "jdbc:mysql://localhost:3306/box_log_copy"; static String tableName=""; static String driver = "com.mysql.jdbc.Driver"; static Connection con = null; static { try { Class.forName(driver); initInfo(2); con = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } } //想切换不同库里的表,配置以下url 和tableName就OK了。 private static void initInfo(int type) { switch (type) { case 1: url = "jdbc:mysql://localhost:3306/box_oms_copy"; tableName = "box_local_phone_sale_sum"; break; case 2: url = "jdbc:mysql://localhost:3306/box_log_copy"; tableName = "box_local_test_log"; break; default: url = "jdbc:mysql://localhost:3306/box_log_copy"; tableName="box_mobile_log"; break; } } /** * @param args */ public static void main(String[] args) { String sqlstr = "select * from "+tableName; querySql(tableName, sqlstr); } private static void querySql(String tableName, String sqlstr) { Statement stmt = null; ResultSet rs = null; try{ stmt = con.createStatement(); // sqlstr = "insert into "+tableName+" values ('20140113','jone',01)"; // stmt.executeUpdate(sqlstr); rs = stmt.executeQuery(sqlstr); StringBuilder sb=new StringBuilder(); ResultSetMetaData rsmd = rs.getMetaData(); int j = 0; j = rsmd.getColumnCount(); for(int k = 0; k<j; k++) { // System.out.print(rsmd.getCatalogName(k+1)); System.out.print(rsmd.getColumnName(k+1)); System.out.print("\t"); sb.append(rsmd.getColumnName(k+1)).append(","); } System.out.println(); System.err.println(sb.deleteCharAt(sb.length()-1).toString()); // 以下注释打开后可以输出每行记录的值。 // while(rs.next()) // { // for(int i=0;i<j;i++) // { // System.out.print(rs.getString(i+1)); // System.out.print("\t"); // } // System.out.println(); // } }catch(SQLException e2) { System.out.println("数据库存在异常!"); System.out.println(e2.toString()); } finally { try { colseConection(stmt, rs); } catch(SQLException e) { System.out.println(e.toString()); } } } private static void colseConection(Statement stmt, ResultSet rs) throws SQLException { if(rs != null) rs.close(); if(stmt != null) stmt.close(); if(con != null) con.close(); } }
如果一个数据表结构是:
CREATE TABLE `box_local_test_log` ( `id` bigint(11) NOT NULL AUTO_INCREMENT , `imei` varchar(80) DEFAULT NULL , `mac` varchar(50) DEFAULT NULL , `phoneModel` varchar(80) DEFAULT NULL , `phoneVendor` varchar(50) DEFAULT NULL , `appId` int(11) DEFAULT NULL , `boxId` int(11) DEFAULT NULL , `channelId` int(11) DEFAULT NULL , `fatherChannelId` int(11) DEFAULT NULL, `province` varchar(30) DEFAULT NULL , `city` varchar(30) DEFAULT NULL , `createTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '创建时间', `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `statType` int(4) DEFAULT '2' , `success` bit(1) DEFAULT NULL, `errorMsg` varchar(1000) DEFAULT NULL , PRIMARY KEY (`id`,`createTime`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8
执行后。输出的结果:
id,imei,mac,phoneModel,phoneVendor,appId,boxId,channelId,fatherChannelId,province,city,createTime,updateTime,statType,success,errorMsg
这个表的列就组合成一个String了,其实以上没什么技术含量,只是个简单的demo,大家可以自己扩展得到自己想到的结果。
以上只需要mysql-connector-java-5.1.21.jar /附件中有。
相关推荐
使用java通过jdbc访问mysql数据库,并完成简单的连接登录,增删改查等功能,适合初学者进行参考学习的小demo代码。
完成SQL " "SERVER或MYSQL数据库管理系统的安装,配置,JAVA数据库访问环境的配置;完 " "成数据库表的建立,记录插入等;建立用户表,包含用户名、密码字段;利用JA" "VA实现图形界面,用户登录验证,进入软件运行...
本系统采用JAVA语言开发,使用MySQL数据库进行数据存储,实现了企业固定资产的基本管理功能。 系统设计采用层次结构,分为数据层、业务层和展现层。数据层使用JDBC技术实现与MySQL数据库的连接和数据操作;业务层实现...
基于SSM框架、Bootstrap和MySQL数据库的计算机基于Web的Java毕设课设是一个物流系统。该系统旨在有效管理物流过程,提高物流效率和顾客满意度。 系统主要包括以下功能: 1. 用户管理:包括注册、登录、权限控制等...
目前有许多DBMS产品,如DB2、Oracle、Microsoft SQL Server 、Sybase、Informix、MySQL等,Java程序需要访问这些数据库,并对数据进行处理。 Java高级程序设计实战教程第八章-Java数据库编程全文共12页,当前为第2页...
完成SQL " "SERVER或MYSQL数据库管理系统的安装,配置,JAVA数据库访问环境的配置;完 " "成数据库表的建立,记录插入等;建立用户表,包含用户名、密码字段;利用JA" "VA实现图形界面,用户登录验证,进入软件运行...
程序开发软件:Eclipse或者Idea + WebStorm 数据库:mysql api接口采用技术:Vue(前端框架) + Vant(前端轻量级ui库) + SSM框架,可以升级Springboot 基于Vue图书管理app技术要点: 1 此系统web端接口采用java语言...
基于SSM框架的高校师生科研成果管理平台采用了MySQL数据库进行数据存储,利用了框架提供的便捷性和灵活性,构建了一个稳定、高效、易用的科研成果管理平台,为高校科研人员提供了强大的科研支持和管理服务。
6、运行步骤:首先将代码导入到eclipse或者其他IDE,然后利用mysql数据库建一个名为admintwo的库,将admintwo.sql执行一遍。修改jdbc.properties和img.properties,其中jdbc.properties是数据库连接信息,img....
本系统采用MySQL数据库进行数据存储,通过JDBC技术实现数据的访问。前端使用JSP技术开发,后端使用Servlet技术开发。系统界面简洁美观,操作流畅,实现了基本的学生选课、教师管理课程、管理员管理用户功能,为学生选课...
毕业设计,基于SSM+Vue+Vant+MySql开发的前后端分离的图书管理系统,内含Java完整源代码,数据库脚本,视频教程 基于Vue+Vant+SSM图书管理系统设计后端可升级Springboot 程序开发软件:Eclipse或者Idea + WebStorm...
1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? 1.5.2. ...
1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? ...
MariaDB 10.0 Series java访问JDBC的jar包。 MariaDB Client Library for Java Applications 1.0 Series 该jar包的Devicer全名称:org.mariadb.jdbc.Driver
这是一个基于JAVA语言的在线考试...通过这个项目,您可以学习到如何使用Java语言和SpringBoot框架进行Web开发,掌握前后端分离的开发模式,熟悉MySQL数据库的使用,以及如何设计和实现一个在线考试与学习交流网页平台。
1.新建mysql数据库名称为tms,并导入项目sql语句 (表比较多可能时间较长) 2.将项目导入idea开发工具中(maven下载依赖需要等待) 3.修改项目数据连接地址TMS\src\main\resources\db.properties文件4-6行 4.将项目...
1.4. MySQL数据库管理系统概述 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 1.5. MaxDB数据库管理系统概述 1.5.1. 什么是MaxDB? ...