PreparedStatement 语句写法问题

zisidemao 2006-12-05 02:29:08
// stmt=conn.createStatement();
// rs=stmt.executeQuery("select * from "+tableName);
PreparedStatement pstmt=conn.prepareStatement("select * from ?");
pstmt.setString(1,tableName);
// pstmt.setString(2,tableName);
rs = pstmt.executeQuery();
请问我这PreparedStatement语句是不是写错了?SQL语句用PreparedStatement写我上面的写法对么?
...全文
230 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
awusoft 2006-12-05
  • 打赏
  • 举报
回复
会有问题的啦...因为放入的是字符串啦,所有它会把''这两个也加上(Oracle)中,这时候可以用字符串连接来解决吧.突然想的
PreparedStatement pstmt=conn.prepareStatement("select * from "+tableName);
dr_lou 2006-12-05
  • 打赏
  • 举报
回复
import java.sql.*;

public class j
{
public static void main(String [] args)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:aa");
PreparedStatement ps = con.prepareStatement("select * from jobs where job_id = ?");
ps.setInt(1,1);
ResultSet rs = ps.executeQuery();
while(rs.next())
{
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getInt(3));
System.out.println(rs.getInt(4));
}
rs.close();
ps.close();
con.close();
}
catch(Exception e)
{
System.out.print(e);
}
}
}



? 应该是写在条件那里吧
如果写在表名那里, 会有SQL异常

(已试验)
galant2008 2006-12-05
  • 打赏
  • 举报
回复
对的
harston 2006-12-05
  • 打赏
  • 举报
回复
对的,没有错误
liugang9936033 2006-12-05
  • 打赏
  • 举报
回复
// stmt=conn.createStatement();
// rs=stmt.executeQuery("select * from "+tableName);
PreparedStatement pstmt=conn.prepareStatement("select * from ?");
pstmt.setString(1,tableName);
// pstmt.setString(2,tableName);
rs = pstmt.executeQuery();
请问我这PreparedStatement语句是不是写错了?SQL语句用PreparedStatement写我上面的写法对么?

PreparedStatement pstmt=conn.prepareStatement("select * from ?");
pstmt.setString(1,tableName);
假设 String tableName ="tableA";
得到的sql语句如下;
select * from 'tableA' ;
这个语句在数据库中是不可以执行!
相反
PreparedStatement pstmt=conn.prepareStatement("select ? from tableA");
String colName ="aaa";
pstmt.setString(1,colName );

语句如下

select ‘aaa’ from tableA
在数据库中是可以执行!
理解一下setString()作的动作!

zisidemao 2006-12-05
  • 打赏
  • 举报
回复
还有就是tableName是个字符串变量,但是 pstmt.setString(1,"account");这么写也是不成
提示MySQL server version for the right syntax to use near ''account''at line 1
SQL语法错误.
zisidemao 2006-12-05
  • 打赏
  • 举报
回复
我想问问如何做PreparedStatement pstmt=conn.prepareStatement("select * from ?");然后通过setXXX()来做
zisidemao 2006-12-05
  • 打赏
  • 举报
回复
成是成,不过这么写有什么必要呢?换
stmt=conn.createStatement();
// rs=stmt.executeQuery("select * from "+tableName); 这2句不就好了么
awusoft 2006-12-05
  • 打赏
  • 举报
回复
那样写不行吗?出什么问题了?
zisidemao 2006-12-05
  • 打赏
  • 举报
回复
楼上说的完全正确.....确实报的是着个错误...但是这样写跟
// stmt=conn.createStatement();
// rs=stmt.executeQuery("select * from "+tableName); 一点区别没有啊!

81,092

社区成员

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

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