public Script(String sql, List pars) {
this.original = sql;
this.sql = sql;
this.originalParams = pars;
this.params = new ArrayList();
Hashtable temp = new Hashtable(); String sql;
List pars;
Regex r = new Regex(@"[{](?<name>[^}]*)[}]");
MatchCollection ms =r.Matches(sql);
foreach (Match m in ms) {
String key = m.Groups["name"].Value;
if (temp[key] == null) {
temp[key.ToUpper()]= 1;
params.Add("{" + key + "}");
sql = sql.Replace("{" + key + "}","@" + (params.Count + originalParams.Count));
}
}
Regex regex = newRegex(@"(\W)[Rr][Ee][Tt][Uu][Rr][Nn](\W)");
sql = regex.Replace(sql,"$1SELECT$2");
regex = new Regex(@"^[Rr][Ee][Tt][Uu][Rr][Nn](\W)");
sql = regex.Replace(sql, "SELECT$1"); }如何转化成java代码,谢谢!!!
this.original = sql;
this.sql = sql;
this.originalParams = pars;
this.params = new ArrayList();
Hashtable temp = new Hashtable(); String sql;
List pars;
Regex r = new Regex(@"[{](?<name>[^}]*)[}]");
MatchCollection ms =r.Matches(sql);
foreach (Match m in ms) {
String key = m.Groups["name"].Value;
if (temp[key] == null) {
temp[key.ToUpper()]= 1;
params.Add("{" + key + "}");
sql = sql.Replace("{" + key + "}","@" + (params.Count + originalParams.Count));
}
}
Regex regex = newRegex(@"(\W)[Rr][Ee][Tt][Uu][Rr][Nn](\W)");
sql = regex.Replace(sql,"$1SELECT$2");
regex = new Regex(@"^[Rr][Ee][Tt][Uu][Rr][Nn](\W)");
sql = regex.Replace(sql, "SELECT$1"); }如何转化成java代码,谢谢!!!
解决方案 »
- 120急救!!!servlet连接mysql的错误
- 递归搜索文件夹
- 求助!大家看看我的Java程序错在哪啊
- 请问下面程序里最后一行this.repaint();是什么意思。。this是哪个对象
- 请教插入数据库乱码的问题(插入日文全变成问号),谢谢!
- 请问XDJM怎么将程序运行中需要的数据写入txt文件,并通过记事本能正常打开阅读而不是乱码?
- 求助!!我的程序为什么会抛出异常?
- ****eclipse不能用啊,为什么啊,有以下提示***
- 为何总是在执行是提示:Exception in thread "main" java.lang.NoClassDefFoundError: Fruit
- 回復了14次還沒解決!!在線等,進來看看!!
- java插入大对象
- 讨论下:JAVA实现打印的最优方法是什么?
List pars;
中间这两句是干什么呀,在c#中能编辑通过吗?全局变量已经sql并且参数sql你再定义个sql?
public Script(String sql,List pars)
{
this.original = sql;
this.sql = sql;
this.originalParams = pars;
this.params = new ArrayList();
Map<Integer,String> hashMap=new HashMap<Integer,String>();
String regex="("[{](?<name>[^}]*)[}]");//我不明白你的正则想干什么
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(s);
List<String> list=new ArrayList<String>();
while(matcher.find())
{
list.add(matcher.group());
}
for(String key:list)
{
if(!hashMap.containsKey(key))
{
hashMap.put(key.toUpperCase(),1);
params.add("{" + key + "}");
sql=sql.replace("{" + key + "}","@" + (params.size() + originalParams.size()));
}
}
}
import java.util.Hashtable;
import java.util.List;
import com.kayang.db.DataView;
import com.kayang.db.Database;public class Script implements Cloneable {
public static String makeWithSelect(String sql) {
/*
* if (!startWithSelect(sql)) { sql = "select " + sql; }
*/
return sql;
} private List params;
private List originalParams;
private String sql;
private String original; public Script(String sql) {
this(sql, new ArrayList());
} // / <summary>
// / pars可传入部分参数,sql可包含@1、@2等
// / </summary>
public Script(String sql, List pars) {
this.original = sql;
this.sql = sql;
this.originalParams = pars;
this.params = new ArrayList();
// Save parsed Paramters, avoid process
Hashtable temp = new Hashtable();
// twice /*
* Regex r = new Regex(@"[{](?<name>[^}]*)[}]"); MatchCollection ms =
* r.Matches(sql); foreach (Match m in ms) { String key =
* m.Groups["name"].Value; if (temp[key] == null) { temp[key.ToUpper()]
* = 1; params.Add("{" + key + "}"); sql = sql.Replace("{" + key + "}",
* "@" + (params.Count + originalParams.Count)); } } Regex regex = new
* Regex(@"(\W)[Rr][Ee][Tt][Uu][Rr][Nn](\W)"); sql = regex.Replace(sql,
* "$1SELECT$2"); regex = new Regex(@"^[Rr][Ee][Tt][Uu][Rr][Nn](\W)");
* sql = regex.Replace(sql, "SELECT$1");
*/
} public String getOriginalStr() {
return original;
} protected Script() {
} public static Script scriptForString(String p) {
if (p == null || p == "") {
return null;
} else {
return new Script(p);
}
} public Object getValue(Database db, IDataContext ctx) throws Exception {
sql = makeWithSelect(sql);
List param = new ArrayList(originalParams);
for (int i = 0; i < params.size(); i++) {
// param.Add(ctx.GetValue((String)params[i]));
param.add(ctx.getValue((String) params.get(i)));
}
// try
// {
return db.queryScalar(sql, param);
// }
// catch (System.Data.SqlClient.SqlException ex)
// {
// if (ex.Number == 8134)//遇到以零作除数错误
// {
// return 0;
// }
// else
// {
// throw ex;
// }
// }
} public DataView getData(Database db, IDataContext ctx) throws Exception {
List param = new ArrayList(originalParams);
for (int i = 0; i < params.size(); i++) {
param.add(ctx.getValue((String) params.get(i)));
}
return (DataView) db.query(sql, param);
} public int execute(Database db, IDataContext ctx) throws Exception {
List param = new ArrayList(originalParams);
for (int i = 0; i < params.size(); i++) {
param.add(ctx.getValue((String) params.get(i)));
} // return db.execute(sql, param);
db.execute(sql, param);
return 0;
} public List getRelyColumns() {
List p = new ArrayList();
for (int i = 0; i < params.size(); i++) {
String x = (String) params.get(i);
if (x.indexOf('.') < 0 && x.indexOf('[') > 0) {
p.add(x.substring(2, x.length() - 4));
}
}
return p;
} public List getRelyParameters() {
String[] systemParamters = { "MYEID", "MYDEPID", "MYCOMPID", "MYJOBID" };
List p = new ArrayList();
for (int i = 0; i < params.size(); i++) {
String x = (String) params.get(i);
if (x.indexOf('.') < 0 && x.indexOf('[') < 0) {
x = x.substring(1, x.length() - 2);
boolean s = true;
for (int j = 0; j < systemParamters.length; j++) {
if (systemParamters[j] == x) {
s = false;
break;
}
}
if (s) {
p.add(x);
}
}
}
return p;
} public Object clone() {
Script script = new Script();
script.sql = sql;
script.original = original;
script.originalParams = new ArrayList(originalParams);
script.params = new ArrayList(params);
return script;
} /*
* public String ReplacedString(IDataContext ctx) { String ret = sql; for
* (int i = 0; i < params.Count; i++) { ret = ret.Replace("@" +
* (originalParams.Count + i + 1), ctx .GetCaption((String) params[i])); }
* return ret; }
*/ public String replacedString(IDataContext ctx) {
String ret = sql;
for (int i = 0; i < params.size(); i++) {
ret = ret.replaceAll("@" + (originalParams.size() + i + 1), ctx
.getCaption((String) params.get(i)));
}
return ret;
}}
Map<Integer,String> hashMap=new HashMap<Integer,String>();
应该是
Map<String,Integer> hashMap=new HashMap<String,Integer>();
在java中用什么