2015-01-04 64 views
0
import java.sql.*; 
import java.util.Scanner; 

public class DynamicTableCreate { 

    static String url, user, password; 
    static { 
     url="jdbc:mysql://localhost/testing"; 
     user="root"; 
     password="root"; 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Connection con=null; 
     Statement stmt=null; 

     Scanner scan=new Scanner(System.in); 
     System.out.println("Enter table name"); 
     String tname=scan.next(); 
     System.out.println("Enter number of columns"); 
     int cols=scan.nextInt(); 
     System.out.println("Enter column names and data types "); 
     String [] colnames=new String[5]; 
     String [] datatype=new String[5]; 
     int i=0; 
     while(i<cols) 
     { 
      colnames[i]=scan.next(); 
      datatype[i]=scan.next(); 
      i++; 
     } 

     // Create table Trainers (T_Id int primary key, Trainer_name varchar(20), Stream varchar(20)); 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      con=DriverManager.getConnection(url,user,password); 
      stmt=con.createStatement(); 

      String sql1 = "create table " + tname + "(" + colnames[0] + " " + datatype[0] + " primary key, "; 
      for(i=1;i<cols;i++) 
      { 
       sql1 += colnames[i] + " " + datatype[i] + ", "; 
      } 
      sql1+=");"; 
      stmt.executeUpdate(sql1); 
     } 

     catch (ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     finally 
     { 
      try 
      { 
       if (stmt!=null) 
        stmt.close(); 
       if(con!=null) 
        con.close(); 
      } 
      catch(Exception e) 
      { 

      } 
     } 
    } 
} 

我要创建表,其中用户给出表名,列,列名和它们的数据类型的数量,但我的代码会引发以下错误:提示用户输入详细信息表创建

融为一体。 mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:在您的SQL语法中,有 错误;检查对应于您 MySQL服务器版本在1号线

如何解决使用附近“)”正确的语法手册?

+1

你做任何研究或调试,看看有什么结果你的SQL查询是(例如,将字符串输出到控制台或其他日志)?我知道MySQL返回的错误消息并不是很好,但它解释了这个问题。 – Turnerj 2015-01-04 12:16:24

回答

0

的问题就解决了......

要做的唯一变化是只需更换

sql1 += colnames[i] + " " + datatype[i] + ", "; 

通过

sql1 += ", " + colnames[i] + " " + datatype[i];