前面略.如果是
PreparedStatement ps=null;
String sql="create table 新增表名(biaoming int)";
ps=ct.prepareStatement(sql);
ps.executeUpdate();
就能填加成功.但是这样,就不能灵活的添加 想要的表了.
所以我改成如下命令
-----------------------------------------------------------------------------------------------------------
PreparedStatement ps=null;String sql="create table ?(biaoming int)";
String biaoming="新增表名";
ps=ct.prepareStatement(sql);
ps.setString(1, biaoming);ps.executeUpdate();运行时,就错误,提示:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: '@P1' 附近有语法错误。

解决方案 »

  1.   

    设置断点调试出来sql语句。或者在Log4j输出日志里打印出来组合好的sql。sql组织有错
      

  2.   


    PreparedStatement ps=null;String sql="create table ?(biaoming int)";
    String biaoming="新增表名";
    //biaoming 这个变量 和 "create table ?(biaoming int)";ps=ct.prepareStatement(sql);
    ps.setString(1, biaoming);ps.executeUpdate();
      

  3.   

    JDBC规范不支持楼主写的这种在创建表时候的预编译语句(采用?占位符),如果楼主想要灵活动态创建表的话,最主要的问题是确定表的结构,如果仅仅是写个根据表名不同而结构不同的方法我看不出有什么应用价值真的要灵活创建表,建议用字符串拼接的方法,对应的表结构也拼接一下,这里贴一个只是表名称不同的例子
    private static void createTable(String name){
    try {

    String sql="create table "+name+"(id int,name varchar(255))";

    ps=con.prepareStatement(sql); ps.executeUpdate();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }