Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
MySQL、Java和插入表_Java_Mysql_Jdbc - Fatal编程技术网

MySQL、Java和插入表

MySQL、Java和插入表,java,mysql,jdbc,Java,Mysql,Jdbc,TL;DR:我在向表中插入新的“类”时遇到问题,并且认为错误与runQuery函数有关。我现在已经省略了runQuery函数的其余部分,因为我认为这对于这个问题没有必要,但是我可以将它添加到241行中。根据我在网上看到的关于这种情况的情况,准备好的报表似乎是输入信息的一种更简单的方式,不是吗 感谢您通读本文以及您可能的帮助 从链接图像到堆栈跟踪,似乎有人试图执行带有参数的语句?席位持有者。SQL引擎抱怨ClassID的参数为“?”。应该是吗?不是“?”,因为数值不需要“”。然而奇怪的是,我在查询

TL;DR:我在向表中插入新的“类”时遇到问题,并且认为错误与runQuery函数有关。我现在已经省略了runQuery函数的其余部分,因为我认为这对于这个问题没有必要,但是我可以将它添加到241行中。根据我在网上看到的关于这种情况的情况,准备好的报表似乎是输入信息的一种更简单的方式,不是吗


感谢您通读本文以及您可能的帮助

从链接图像到堆栈跟踪,似乎有人试图执行带有参数的语句?席位持有者。SQL引擎抱怨ClassID的参数为“?”。应该是吗?不是“?”,因为数值不需要“”。然而奇怪的是,我在查询中找不到任何ClassID参数。

我有一行代码,它在哪里?标记为有问题,语法应为:sql+=“?”;或sql+=?;如果对应的类型是string aka VARCHAR或类似的类型,那么如果它是数值型的,那么它应该是“?”?。想想当你更换你的电脑时?使用变量中的值,它将生成一个定义良好的SQL命令。那么如何处理输入的不同数据类型呢?我想这是一个常见的问题,有一个相当简单的解决方案……不,不是。JDBCAPI中有一些调用允许您识别列类型,您可以相应地调整参数,但我建议重新考虑设计。这整件事闻起来有点像是个坏主意。runQuery方法应该是一个内部服务例程,但它真的比调用PreparedStatement.exec做得更多吗?在理想情况下,应用程序所需的所有SQL查询都是预先知道的,可以作为静态常量字符串或PreparedStatements放置。根据我的“研究”,我发现PreparedStatements经常用于插入,而且它似乎是处理这类内容的一个更简单、更高效的系统。我觉得重做是最简单的解决办法。谢谢你的意见,我真的很感激。
public ResultSet runQuery(String cmd, String table, String[] keys, String[] values,          String[] whereKeys, String[] whereValues, int limitStart, int limitCount) throws    Exception
{
    PreparedStatement stmt;

    if(!(cmd.equals("INSERT") || cmd.equals("SELECT") || cmd.equals("UPDATE") || cmd.equals("DELETE")))
    {
        throw new Exception("CMD UNSUPPORTED! CMD must be INSERT, SELECT, UPDATE, or DELETE.");
    }

    String sql = "";
    if(cmd.equals("INSERT"))
    {
        //Build Insert statement
        sql += "INSERT INTO "+table+" (";

        for(int i = 0; i < keys.length; i++)
        {
            sql += ""+keys[i]+"";
            if(i!=keys.length-1)
                sql+=",";
        }

        sql += ") VALUES(";

        for(int i = 0; i < values.length; i++)
        {
            sql += "'?'"; //This line seems to be causing trouble for me...
            if(i!=values.length-1)
                sql+=",";
        }

        sql += ")";

    }
public boolean createUser(String first, String last, String user, String pass)
{
    String[] keys = {"FName", "LName", "UName", "Password"};
    String[] vals = {first, last, user, pass};

    try
    {
        runQuery("INSERT", "Users", keys, vals, null, null, 0, 30);
    }catch(Exception e)
    {
        e.printStackTrace();
        System.out.println(e);
        return false;
    }

    return true;
}



public boolean createClass(int classID, String name, int adminID, String institution, String meetTimes)
{
    String[] keys = {"ClassID", "ClassName", "AdminID", "Institution", "MeetTimes"};
    String[] vals = {Integer.toString(classID), name, Integer.toString(adminID), institution, meetTimes};

    try
    {
        runQuery("INSERT", "Classes", keys, vals, null, null, 0, 30);
    }catch(Exception e)
    {
        e.printStackTrace();
        System.out.println(e);
        return false;
    }

    return true;
}