2015-01-04 70 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];