想快,就根据数据库,直接读取结构的表,
否则,SELECT FROM table (添加一个条件,别读回所以记录,如WHERE 1=2之类)
再通过ResultSet来判断
ResultSetMetaData getMetaData()
得到 ResultSetMetaData 再逐个field比较
InputStream is = new FileInputStream(filepath + "/赛程xlsx");
Workbook wb = null;
try {
wb = WorkbookgetWorkbook(is);
} catch (BiffException e) { // TODO Auto-generated catch block
eprintStackTrace();
}
Sheet sheet = wbgetSheet(0);
Cell cell = null;
int line = sheetgetColumns();
int row = sheetgetRows();
try {
ArrayList<ArrayList<String>> arraylist = new ArrayList<ArrayList<String>>();
for (int r = 1; r < row; r++) {
ArrayList<String> array = new ArrayList<String>();
for (int i = 0; i < line; i++) {
cell = sheetgetCell(i, r);
result = ExparceCell(cell, i);
arrayadd(result);
}
arraylistadd(array);
}
} catch (Exception e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
这是早年我写的一份,你看看能不能用。
还有你问的第二个问题我不太明白,但是以我的程序为例,两个arrayList,外层arrayList已经一个循环,然后new 新的arrayList直接追加在它的后面。
额。。具体代码小弟才疏学浅。。现场写不出来,不过有点建议
首先要写两个数据库驱动类,分别负责连接两个数据库,(可也可以使用参数的形式来调用,这样就可以只写一个)
然后可以定义一个list链表,将第一个数据库里的数据存入进去,
然后再使用循环将链表中的数据再一个一个的放入到第二个数据库中。。
以上个人想法,额。。如果不成。。可以当成废话无视。。
我的思路是这样地:
mysql数据库中的表结构是这样地:
ProductSerial varchar(20)
BeepEnableLevel varchar(20)
数据库名称是db_mydb
表名称是tb_mytable
从每行读出的内容提取出来:
String str1 = "010";
String str2 = "1";
使用阿帕奇出品的commons包中的QueryRunner 对象来 *** 作存入数据库(采用了c3p0连接池)
QueryRunner qr = new QueryRunner();String sql = "insert into tb_mytable values(,)"; //sql模板
qrupdate(sql, str1, str2);
====================================
如果不采用第三方工具包的话也可以完全依靠javaee的库来搞,那代码就麻烦多了:
获得数据库连接(手敲四大连接参数)
ClassforName("commysqljdbcDriver");Connection conn = DriverManagergetConnection("jdbc:mysql://localhost:3306/db_mydb","root","123");
PreparedStatement pre= connprepareStatement();
String sql = "insert into tb_mytable values(,)";
presetString(1,str1);
presetString(2,str2);
preexecuteUpdate();
preclose();
connclose();
=====================
上面都是只处理一行读取的数据,可以用循环来搞地。
你用的什么数据库?几个?其实很简单,用查询语句查出表结构返回给程序,你可以把每次的查询结果放到一个文件里,然后比对。还有更简单的是做一个存储过程,返回差异内容给程序,然后设置定时执行
Java获取数据库的表中各字段的字段名,代码如下:
import javasqlConnection;import javasqlDriverManager;import javasqlResultSet;import javasqlPreparedStatement;import javasqlResultSetMetaData;import javasqlSQLException;public class TestDemo {public static Connection getConnection() {Connection conn = null;try {ClassforName("commysqljdbcDriver");String url = "jdbc:mysql://数据库IP地址:3306/数据库名称";String user = "数据库用户名";String pass = "数据库用户密码";conn = DriverManagergetConnection(url, user, pass);} catch (ClassNotFoundException e) {eprintStackTrace();} catch (SQLException e) {eprintStackTrace();}return conn;}public static void main(String[] args) {Connection conn = getConnection();String sql = "select from AccessType";PreparedStatement stmt;try {stmt = connprepareStatement(sql);ResultSet rs = stmtexecuteQuery(sql);ResultSetMetaData data = rsgetMetaData();for (int i = 1; i <= datagetColumnCount(); i++) {// 获得所有列的数目及实际列数int columnCount = datagetColumnCount();// 获得指定列的列名String columnName = datagetColumnName(i);// 获得指定列的列值int columnType = datagetColumnType(i);// 获得指定列的数据类型名String columnTypeName = datagetColumnTypeName(i);// 所在的Catalog名字String catalogName = datagetCatalogName(i);// 对应数据类型的类String columnClassName = datagetColumnClassName(i);// 在数据库中类型的最大字符个数int columnDisplaySize = datagetColumnDisplaySize(i);// 默认的列的标题String columnLabel = datagetColumnLabel(i);// 获得列的模式String schemaName = datagetSchemaName(i);// 某列类型的精确度(类型的长度)int precision = datagetPrecision(i);// 小数点后的位数int scale = datagetScale(i);// 获取某列对应的表名String tableName = datagetTableName(i);// 是否自动递增boolean isAutoInctement = dataisAutoIncrement(i);// 在数据库中是否为货币型boolean isCurrency = dataisCurrency(i);// 是否为空int isNullable = dataisNullable(i);// 是否为只读boolean isReadOnly = dataisReadOnly(i);// 能否出现在where中boolean isSearchable = dataisSearchable(i);Systemoutprintln(columnCount);Systemoutprintln("获得列" + i + "的字段名称:" + columnName);Systemoutprintln("获得列" + i + "的类型,返回SqlType中的编号:"+ columnType);Systemoutprintln("获得列" + i + "的数据类型名:" + columnTypeName);Systemoutprintln("获得列" + i + "所在的Catalog名字:"+ catalogName);Systemoutprintln("获得列" + i + "对应数据类型的类:"+ columnClassName);Systemoutprintln("获得列" + i + "在数据库中类型的最大字符个数:"+ columnDisplaySize);Systemoutprintln("获得列" + i + "的默认的列的标题:" + columnLabel);Systemoutprintln("获得列" + i + "的模式:" + schemaName);Systemoutprintln("获得列" + i + "类型的精确度(类型的长度):" + precision);Systemoutprintln("获得列" + i + "小数点后的位数:" + scale);Systemoutprintln("获得列" + i + "对应的表名:" + tableName);Systemoutprintln("获得列" + i + "是否自动递增:" + isAutoInctement);Systemoutprintln("获得列" + i + "在数据库中是否为货币型:" + isCurrency);Systemoutprintln("获得列" + i + "是否为空:" + isNullable);Systemoutprintln("获得列" + i + "是否为只读:" + isReadOnly);Systemoutprintln("获得列" + i + "能否出现在where中:"+ isSearchable);}} catch (SQLException e) {eprintStackTrace();}}}
以上就是关于如何判断数据库中某个字段不存在(用java编写)全部的内容,包括:如何判断数据库中某个字段不存在(用java编写)、求问java中poi导入execl表到数据库,表的结构是多行多SHEET,且每个sheet结构不同,请问怎么实现。、用java怎么实现把一个Access数据表中满足要求的记录取出来放入另一个Acccess数据表中,两表结构相同。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)