跪求高手帮忙!!!

JAVAERAL 2011-05-13 12:03:14
最近研究JDBC,发现里面插入的语句十分复杂,让人很纠结...然后寻找替代方法,找到了个MessageFormat.format( a ,b)的方法。然后问题就来了:我想向数据库中插入一条语句,是从控制台接收变量插入,如例:String sql=MessageFormat.format(
"insert table1 vales('{0}','{1}',{2})",loginid,pwd,sid);其中loginid和pwd都是String型,sid是int型。我发现这样就用不了这个简单的方法,很纠结。因为这样sql输出的是 insert table1 values({0},{1},3)...如果前面不用’单引号引起来,就是insert table1 values(superadmin,sa123,3),但是这样插到数据库中又报有语法错误,原因是缺少’单引号。真是让人纠结啊,不知道有什么解决的方法没?我连用\去转义单引号都做了,但是还是不行......真的郁闷了。求教....
...全文
73 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
new_bird_0001 2011-05-13
用占位符的方法比用format格式化好,用format每次出来的sql语句都不一定相同,造成数据库多次编译sql语句,降低了sql语句的运行速度,增加了服务器负担,而占位符的sql语句在数据库中只有一条语句,所以只编译一次,所以尽量用占位符而不是format。要好写可以用hibernate框架。
回复
JAVAERAL 2011-05-13
补充:我还知道一个用?问号做占位符的方法,但是我不喜欢那样,我就想像C#里那样的用format方法,不知道是否有解决办法?!
回复
虎翼 2011-05-13
MessageFormat.format("insert into table1 vales(''{0}'',''{1}'',{2})",loginid,pwd,sid);

其他信息
在 String 中,"''" 表示单引号。QuotedString 可以包含除单引号之外的任意字符;围绕的单引号被移除。UnquotedString 可以包含除单引号和左花括号之外的任意字符。因此,格式化后消息字符串为 "'{0}'" 的字符串可以写作 "'''{'0}''" 或 "'''{0}'''"。

回复
tianyu945473925 2011-05-13
不懂,没试过,等待楼主的解决方案……
回复
zn85600301 2011-05-13
[Quote=引用 1 楼 javaeral 的回复:]

补充:我还知道一个用?问号做占位符的方法,但是我不喜欢那样,我就想像C#里那样的用format方法,不知道是否有解决办法?!
[/Quote]

不是个轮子 都能往车上装~
回复
哈哈哈3234 2011-05-13
lz 加油,没有做不到的事,只有想不到的问题,既然你想到这个问题,肯定就能搞定!
回复
茫茫大海 2011-05-13
"insert table1 vales(char(39){0}char(39),char(39){1}char(39),char(39){2}char(39))",loginid,pwd,sid);
可以试试这个!
回复
JAVAERAL 2011-05-13
[Quote=引用 7 楼 wsdst497 的回复:]

MessageFormat.format("insert into table1 vales(''{0}'',''{1}'',{2})",loginid,pwd,sid);

其他信息
在 String 中,"''" 表示单引号。QuotedString 可以包含除单引号之外的任意字符;围绕的单引号被移除。UnquotedString 可以包含除单引号和左花括号之外的任意字符。因此,格式化……
[/Quote]

十分感谢虎翼兄!问题已经解决了,就是用两个’’去表示单引号!我刚刚一试用发现没有出错,呵呵,也感谢大家的一些意见!我也不是非用这个format不可,只是想到了这个用法然后又不知道该怎么解决心理不舒服而已~
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2011-05-13 12:03
社区公告
暂无公告