Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 提示用户输入创建表的详细信息_Java_Jdbc - Fatal编程技术网

Java 提示用户输入创建表的详细信息

Java 提示用户输入创建表的详细信息,java,jdbc,Java,Jdbc,我想创建一个表,其中用户给出了表名、列数、列名及其数据类型,但我的代码抛出以下错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有 SQL语法中的错误;检查与您的产品相对应的手册 第1行附近使用正确语法的MySQL服务器版本 解决办法是什么?问题解决了 唯一要做的改变就是更换 import java.sql.*; import java.util.Scanner; public class DynamicTableCr

我想创建一个表,其中用户给出了表名、列数、列名及其数据类型,但我的代码抛出以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有 SQL语法中的错误;检查与您的产品相对应的手册 第1行附近使用正确语法的MySQL服务器版本


解决办法是什么?

问题解决了

唯一要做的改变就是更换

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)
            {

            }
        }
    }
}


您是否进行过任何研究或调试以查看SQL查询的结果,例如,将字符串打印到控制台或其他日志?我知道MySQL返回的错误消息并不美妙,但它解释了这个问题。
sql1 += colnames[i] + " " + datatype[i] + ", ";
sql1 += ", " + colnames[i] + " " + datatype[i];