下面将为您介绍SQL Insert语句生成器的程序代码,供您参考, Insert语句是SQL语句中最常用的语句之一,希望对您学习SQL能够有所帮助。
程序输出:
insert into User ( name, age ) values( 'BeanSoft', 27 )
import java.util.*;
import StringUtil;
/**
* 生成 Insert SQL 语句的类.
* @author beansoft
* @date 2009-4-5
*/
public class SQLInsert extends HashMap
private String table;// 表格名
private String columns;// 列名表, 以逗号隔开
/** 是否检查列名有效性 */
private boolean checkColumn = true;
/** 是否允许重复设置列值, 默认允许 */
private boolean allowDuplicate = true;
/** 列表, 保存可能的列名 */
private List
public SQLInsert() {}
/**
* 给定表名和列名(用来检验)的构造器.
* @param table - 表名
* @param columns - 列名(用来检验)
*/
public SQLInsert(String table, String columns) {
setTable(table);
setColumns(columns);
}
public static void main(String[] args) {
SQLInsert insert = new SQLInsert();
insert.setTable("User");
insert.setColumns("name, age");
insert.put("name", "BeanSoft");
insert.put("age", 27);
System.out.println(insert);
} #p#
public String toString() {
if(table == null || table.length() == 0) {
throw new Error("对不起, 请调用 setTable() 指定表名");
}
String sql = "insert into " + table + " ( ";
String values = "values( ";
if(this.size() == 0) {
throw new Error("对不起, 没有任何列值, 无法生成 INSERT 语句");
} else if(columnList.size() == 0){
// 尝试从主键列表生成列名列表
String[] cols = this.keySet().toArray(new String[0]);
for(String col: cols) {
columnList.add(col);
}
}
// System.out.println("columnList=" + columnList.size());
if(columnList.size() > 0 ) {
for (int i = 0; i < columnList.size(); i++) {
String col = columnList.get(i);
Object value = this.get(col);
if(value == null && checkColumn) {
throw new Error("对不起, 列[" + col + "]的值为空");
}
sql += col;
if(!StringUtil.isNumeric(value + "")) {
values += "'" + value + "'";
} else {
values += value;
}
if (columnList.size() > 1 && (i != columnList.size() - 1)) {
sql += (", ");
values += (", ");
}
}
}
sql += (" ) ");
values += (" )");
// System.out.println("自动生成的 sql = " + sql + values);
return sql + values;
}
/**
* @param columns the 列名表, 以逗号隔开 to set
*/ #p#
public void setColumns(String columns) {
this.columns = columns;
columnList.clear();
if(columns != null) {
// 替换空格等字符, 否则解析会出错
StringBuffer buff = new StringBuffer();
for(int i = 0; i < columns.length(); i++) {
char ch = columns.charAt(i);
if(Character.isSpaceChar(ch)) {
continue;
}
buff.append(ch);
}
String[] cols = buff.toString().split(",");
// System.out.println("cols.length=" + cols.length);
for(String col: cols) {
columnList.add(col);
}
}
}
/**
* @return the 是否允许重复设置列值, 默认允许
*/
public boolean isAllowDuplicate() {
return allowDuplicate;
}
/**
* @param allowDuplicate the 是否允许重复设置列值, 默认允许 to set
*/
public void setAllowDuplicate(boolean allowDuplicate) {
this.allowDuplicate = allowDuplicate;
}
/**
* @return the 是否检查列名有效性
*/
public boolean isCheckColumn() {
return checkColumn;
}
/**
* @param checkColumn the 是否检查列名有效性 to set
*/
public void setCheckColumn(boolean checkColumn) {
this.checkColumn = checkColumn;
}
/**
* @return the 列名表, 以逗号隔开
*/
public String getColumns() {
return columns;
} #p#
/**
* 表格名
* @return
*/
public String getTable() {
return table;
}
/**
* 表格名
* @param table
*/
public void setTable(String table) {
this.table = table;
}
}
【编辑推荐】
SQL数据库压缩语句简介
如何使用SQL语句修改字段默认值
教您用事务一次处理多条SQL语句
通过执行多条SQL语句实现数据库事务
存储过程优化的SQL语句写法
网站题目:SQLInsert语句生成器简介
分享URL:http://www.shufengxianlan.com/qtweb/news22/337322.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联