求字符串的部分内容从数据库替换的问题(人在线等)

shan__le 2011-09-14 02:42:09
我数据库里保存的是这串sql
insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')
具体思路是这样的,我写一段sql,但是这段的取值我已经从页面中写好了,就是ds2.getString()取到,目前是我想另外一个ds的数据库操作来运行这串sql,添加进去数据库的则是"+ds2.getString("blob_mkmc")+"这么一串东西,而不是我想要的值,我如何能将这串中的ds部分换取所需要的具体值?这串拷贝进去是不会出错的,但是当作变量进去就会报错,代码如下。

<%
String id=request.getParameter("id");
String sqlstr1,sqlstr2,sqlstr3;
String sm="",ms="",sqlselect_str="",ysjkpz="",mb_sqlstr="",mbsjkpz="",gxsz="",n_indexfield="",o_indexfield="";
int dssz,xhcs,dbconfig,indexconfig;
//更新的条件获取
sqlstr1="select * from sjjh_config where sjjh_config_id="+id;
ds.setCommand(sqlstr1,"oa");
ds.execute();
if(ds.next()){
sm=ds.getString("sm");
ms=ds.getString("ms");
sqlselect_str=ds.getString("sqlselect_str");
ysjkpz=ds.getString("ysjkpz");
mb_sqlstr=ds.getString("mb_sqlstr");
mbsjkpz=ds.getString("mbsjkpz");
gxsz=ds.getString("gxsz");
o_indexfield=ds.getString("o_indexfield");
n_indexfield=ds.getString("n_indexfield");

dssz=ds.getInt("dssz");
xhcs=ds.getInt("xhcs");
dbconfig=ds.getInt("dbconfig");
indexconfig=ds.getInt("indexconfig");
}
ds.close();
//获取插入字段名
/**String str = mb_sqlstr;
String ss = str.substring(str.indexOf("$") - 1,
str.lastIndexOf("$") + 2);
String[] arys = ss.split("\\,");

List<String> list = new ArrayList<String>();

for (int i = 0; i < arys.length; i++)
{
String temp = arys[i];

String date = temp.substring(temp.indexOf("$") + 1,
temp.lastIndexOf("$"));

list.add(date);


}
System.out.println(list);
**/
//查找目标数据源

ds2.setCommand(sqlselect_str,ysjkpz);
ds2.execute();
int sum=0;
while(ds2.next()){

//mb_sqlstr = mb_sqlstr.replaceAll("\'\\$", "\'\"\\+");
//mb_sqlstr = mb_sqlstr.replaceAll("\\$\'", "\\+\"\'");
mb_sqlstr= "insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values("+ds2.getString("blob_wid")+","+ds2.getString("blob_mkmc")+",'',"+ds2.getString("blob_scsj")+","+ds2.getString("blob_fjmc")+","+ds2.getString("blob_scr")+")";
//mb_sqlstr="\""+mb_sqlstr+"\"";
//mb_sqlstr="insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')";
//ds3.executeUpdate(mb_sqlstr,mbsjkpz);
//ds3.executeUpdate("insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')",mbsjkpz);
mb_sqlstr="\"+mb_sqlstr+"\";
out.print(mb_sqlstr+"<BR>");
sum++;
}
ds2.close();
//ds3.close();
out.print("<BR>本次一共更新:"+sum+"条记录。");
%>
...全文
142 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shan__le 的回复:]
问个另外的问题吧,如何替换某两个特定字符之间的内容,例如$ABC$
我想将abc给替换了
[/Quote]
你想替换成什么,比如 $ABC$ -> xxx ?
String s = "123$ABC$456";
String ss = s.replaceAll("([$])(.*?)([$])", "abcdefg");
System.out.println(ss);
shan__le 2011-09-14
  • 打赏
  • 举报
回复
正在做实验,这个帖子先结了再说吧。
iCielo 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shan__le 的回复:]

问个另外的问题吧,如何替换某两个特定字符之间的内容,例如$ABC$
我想将abc给替换了
[/Quote]

用正则表达式替换吧
安心逍遥 2011-09-14
  • 打赏
  • 举报
回复
ds2是个对象,getString能够获取它的信息
苏星禾 2011-09-14
  • 打赏
  • 举报
回复
为什么不使用
   PreparedStatement而使用Statement
kString 2011-09-14
  • 打赏
  • 举报
回复
你需要用占位符,api中的例子改的
eg:
PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setString(2, ds2.getString("blob_wid"))

shan__le 2011-09-14
  • 打赏
  • 举报
回复
问个另外的问题吧,如何替换某两个特定字符之间的内容,例如$ABC$
我想将abc给替换了
iCielo 2011-09-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shan__le 的回复:]

Rain000
谢谢你给提醒了一下,我原来思路就是这样的,不过后期给跑偏了,给小沈阳给带偏了,我在想想研究一下。
[/Quote]

没事。大家互相帮助,学习
shan__le 2011-09-14
  • 打赏
  • 举报
回复
Rain000
谢谢你给提醒了一下,我原来思路就是这样的,不过后期给跑偏了,给小沈阳给带偏了,我在想想研究一下。
shan__le 2011-09-14
  • 打赏
  • 举报
回复
我原来用的$$作为占位符,哦,有点思路了,我再去研究一下。
shan__le 2011-09-14
  • 打赏
  • 举报
回复
ds2的变量名是绝对不会变的。
iCielo 2011-09-14
  • 打赏
  • 举报
回复
这样不好吧。那万一变量名ds2变了,你不是要重写数据库。

弄个占位符“?”在那边好了,以后每次调用的时候,按顺序替换“?”为实际的值就行了
a_b_a_b_a_b_a_b 2011-09-14
  • 打赏
  • 举报
回复
看着有点乱,没明白咋回事?
shan__le 2011-09-14
  • 打赏
  • 举报
回复
楼上的说的是对的,他已经将这串东西当作字符串了,我就想如何能够去拆分或者是是直接加个""是不是能解决,卡这个问题已经两天了,不知道能不能提供一个其他的思路来解决,例如拼接sql或者是怎么弄。
qybao 2011-09-14
  • 打赏
  • 举报
回复
这个不行吧,ds2.getString已经被当作字符串解析了

其实就是说白了,
我如果这样写,那么就能得到值
String str="insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')"
但是我这样写就不行
这样写是因为程序中,ds2是个对象,getString能够获取它的信息

String str=mb_sqlstr;
实际上mb_sqlstr的内容就是上面这段,就是请问一下如何将这段字符串转换成我需要的内容。
这样的话,ds2.getString已经被当作字符串处理了,是没法还原成ds2对象了
除非自己解析这个字符串,然后生成一个ds2,然后调用ds2的getString方法获取信息


shan__le 2011-09-14
  • 打赏
  • 举报
回复
其实就是说白了,
我如果这样写,那么就能得到值
String str="insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')"
但是我这样写就不行
String str=mb_sqlstr;
实际上mb_sqlstr的内容就是上面这段,就是请问一下如何将这段字符串转换成我需要的内容。
shan__le 2011-09-14
  • 打赏
  • 举报
回复
insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')

就是说我上面这串是从数据库里取得的字符串,但是ds2.getString这部分的都是从另外一个数据库里获取的,我如何能够把这个ds2.getString这部分变成具体的内容。
梅小西Echo 2011-09-14
  • 打赏
  • 举报
回复
楼主你能不能长话短说
shan__le 2011-09-14
  • 打赏
  • 举报
回复
我要是这么写,是没问题的
ds3.executeUpdate("insert into blob_fjsc(blob_wid,blob_mkmc,blob_data,blob_scsj,blob_fjmc,blob_scr) values('"+ds2.getString("blob_wid")+"','"+ds2.getString("blob_mkmc")+"','','"+ds2.getString("blob_scsj")+"','"+ds2.getString("blob_fjmc")+"','"+ds2.getString("blob_scr")+"')",mbsjkpz);
但是如果把这串东西当作一个变量传递进去,就不对了,如何修改呢?
ds3.executeUpdate(mb_sqlstr,mbsjkpz);
mbsjkpz这个是数据库链接配置。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧