您的位置:首页 > 其它

数据表多字段时数据插入的总结

2016-11-23 19:40 162 查看
在开发中我们需要经常使用SQL语句执行数据插入,最常出现的情况是数据表字段不多的时候,那个时候写写sql语句似乎很简单,但是有一天你会发现,你有个数据表,数据表字段有几百个,如果必须使用insert into TB_Table ('字段一','字段二','字段三',....) values(?,?,?,.....);来完成数据的插入,那么这样的sql语句难度不大,但是特别繁琐,那么有什么办法可以解决呢?

直接贴代码。。。。。。。。。。。。。。。。。。

/**
* 保存数据<br>
*
* @param tableName 表名
* @param data 要保存的数据
* @return 返回保存结果。
*/
public int insert(String tableName, Map<String, String> data) {
StringBuilder sql = new StringBuilder(500);
sql.append("select * from ").append(tableName);
SqlRowSet srs = this.getJdbcTemplate().queryForRowSet(sql.toString());
SqlRowSetMetaData srsmd = srs.getMetaData();
int columnCount = srsmd.getColumnCount();

StringBuilder fields = new StringBuilder(500);
StringBuilder values = new StringBuilder(500);
Object[] params = new Object[columnCount];
for (int i = 1; i <= columnCount; i++) {
String columnName = srsmd.getColumnName(i);
String columnValue = StringUtil.formatNullString(data.get(columnName));

if (i != columnCount) {
fields.append(columnName).append(",");
values.append("?,");
} else {
fields.append(columnName);
values.append("?");
}
params[i - 1] = columnValue;
}

if (columnCount > 0) {
sql = new StringBuilder(500);
sql.append("insert into ").append(tableName).append(" (").append(fields).append(")");
sql.append(" values (").append(values).append(")");
return this.update(sql.toString(), params);
} else {
return 0;
}
}


这是今天的总结,虽然不是那么牛,也许效率不高,但是解决了大量手工输入的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐