用JDBC操作数据库,高手请进!!!!!!!!!!

pashi 2007-10-25 04:33:44
用JDBC操作数据库
"select *from tableName"
"tableName" 有什么办法用参数法设置 ,不要用组串的方法;

相当于用 "PreparedStatement"对象设置参数一样;
例如1:
String sql="select *from jobs where id=?";
PreparedStatement pre=con.PrepareStatement(sql);
pre.setInt(1,5);

例如2:
String sql="select *from ?";
PreparedStatement pre=con.PrepareStatement(sql);
pre.setInt(1,5);

例如2:是错误的写法,
有什么办法达到 例如2:这种效果,不要用组串的方法;
...全文
617 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
jk_kl 2007-11-15
  • 打赏
  • 举报
回复
欢迎加入本人的QQ群,群号5586686,身份认证输入如:JAVA、JSP、STRUTS等都可以,非软件开发人员勿加,谢谢合作!
胡矣 2007-10-29
  • 打赏
  • 举报
回复
例如2:
String sql="select *from ?";
PreparedStatement pre=con.PrepareStatement(sql);
pre.setInt(1,5);

感觉这样做没有什么意义.就算这部分可以复用
那下面处理结果集合的时候还是要分开处理的啊
不懂啊......
yu_er 2007-10-29
  • 打赏
  • 举报
回复
還沒見過這么做的呢﹗告訴我
winstonczc 2007-10-29
  • 打赏
  • 举报
回复
这个还是要看需求怎么样,自己封装类或者继承PrepareStatement什么都行,只是看哪个方法相对你的需求成本低一些
StudentIT 2007-10-26
  • 打赏
  • 举报
回复
封装一个吧。
zhb_821012 2007-10-26
  • 打赏
  • 举报
回复

好象我没理解楼住意思
zhb_821012 2007-10-26
  • 打赏
  • 举报
回复
最简单的
public c (String s )
{
.......................省略
String s = s ;
String sql="select *from "+s;
PreparedStatement pre=con.PrepareStatement(sql);
pre.setInt(1,5);
...........省略
}
这样简单不?
public c (String s )这就是你哪个查询方法
ranshaoweng 2007-10-26
  • 打赏
  • 举报
回复
你可以把整条查询语句当成参数来处理吧
programmebird 2007-10-26
  • 打赏
  • 举报
回复
听强人说说 吸取经验
wangzhuming 2007-10-26
  • 打赏
  • 举报
回复
Hibernate或者EJB
tanzhenyi 2007-10-26
  • 打赏
  • 举报
回复
另外javabean 封装 tablename
然后在串起试试
louie520 2007-10-26
  • 打赏
  • 举报
回复
封装一个-----配置.xml文件 想怎么玩就怎么玩

就看你有没有那么大的需求了
qianbiao 2007-10-26
  • 打赏
  • 举报
回复
自找麻烦。
pashi 2007-10-25
  • 打赏
  • 举报
回复
楼主不懂4楼大侠的意思

“是写类简单还是写 表的名字简单”
。。。。。。。。。

我查找的表随时要换的,组串,替换字符串可以解决,但不安全;
请大家明示更好的方法
qiuqiupeng 2007-10-25
  • 打赏
  • 举报
回复
protected Iterator findTagIndex(String tag) throws BadTagException {
Object tagList = tagMap.get(tag);
if (tagList == null) {
throw new BadTagException("Tag[" + tag + "] Not Found!", tag,
SQLStatement);
}
return ((List) tagList).iterator();
}



public void setString(String tag, String value) throws SQLException {
SQLParameters.put(tag, String.valueOf(value));
for (Iterator it = findTagIndex(tag); it.hasNext();) {
int parameterIndex = ((Number) it.next()).intValue();
preparedStatement.setString(parameterIndex, value);
}
}
虽然不知道你在问什么(本人理解能力差),但是还是给一个参考答案
封装上面两个方法试试。(友情提示:记得结贴)
luzhide 2007-10-25
  • 打赏
  • 举报
回复
能简单尽量简单哦~
西咸 2007-10-25
  • 打赏
  • 举报
回复
说清楚
Qonfire 2007-10-25
  • 打赏
  • 举报
回复
楼上的说的对,支持。
sunyujia 2007-10-25
  • 打赏
  • 举报
回复
为什么你要这么干呢说个理由先?或许有更好的解决之道
wangsyou_2007 2007-10-25
  • 打赏
  • 举报
回复
这只是代码的一部分,用的是rs.getMetaData()得到原数据,然后就可以得到传进来的表的列名,列数等参数,然后就可以编历出来了!参考参考吧!
con = JdbcUtilV1.getConnection();
if(con!=null){
String sql = "select * from "+args[0];
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
StringBuffer sb = new StringBuffer();
md = rs.getMetaData();
int cols = md.getColumnCount();
for(int i=0;i<cols;i++){
sb.append(md.getColumnName(i+1)+" ");
sb.append(md.getColumnType(i+1)+" ");
sb.append(md.getColumnTypeName(i+1)+"\n");
}
//sb.append("\n");
while(rs.next()){
for(int i=0;i<cols;i++){
sb.append(rs.getString(i+1)+" ");
}
sb.append("\n");
}
System.out.print(sb.toString());
}
加载更多回复(5)

62,623

社区成员

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

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