Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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 MySQLSyntaxErrorException:“字段列表”中的未知列“\uuuuuuuuuuuuuuuuu”_Java_Mysql_Jdbc - Fatal编程技术网

Java MySQLSyntaxErrorException:“字段列表”中的未知列“\uuuuuuuuuuuuuuuuu”

Java MySQLSyntaxErrorException:“字段列表”中的未知列“\uuuuuuuuuuuuuuuuu”,java,mysql,jdbc,Java,Mysql,Jdbc,我得到以下MySQL异常: public void actionPerformed(ActionEvent e) { list.clearSelection(); String selectString = " "; String afName = auth_fName.getText(); String aMI = auth_MI.getText(); String alName = auth_lName.getText(); String t

我得到以下MySQL异常:

public void actionPerformed(ActionEvent e) {
    list.clearSelection();

    String selectString = " ";
    String afName = auth_fName.getText();
    String aMI = auth_MI.getText();
    String alName = auth_lName.getText();
    String tField = titleField.getText();
    String sField = subjectField.getText();

    try {
        Connection conn = Database.getConnection();

        Statement s = conn.createStatement();

        if (!afName.equals("") && (!aMI.equals("")) && (!alName.equals("")) && (!tField.equals("")) && (!sField.equals(""))) {
            selectString = "SELECT a.call_Number as callNbr "
                + "FROM book a "
                + "FULL JOIN transaction b "
                + "ON a.call_Number=b.call_Number";
        }

        s = conn.createStatement();
        System.out.println(selectString);
        ResultSet rs = s.executeQuery(selectString);

        while (rs.next()) {
            String call_Num = rs.getString("call_Number");
            String title = rs.getString("title");
            String auth_lName = rs.getString("auth_lName");
            String auth_MI = rs.getString ("auth_MI");
            String auth_fName = rs.getString("auth_fName");
            String availability = rs.getString("availability");

            view = new View(call_Num, title, auth_lName, auth_MI, auth_fName, availability);
            vList.add(view);
            System.out.println(view);
        }

        rs.close();
        s.close();
        conn.close();

        list.setListData(vList.toArray());
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:字段列表中的未知列“book.call_Number”

这意味着什么?我如何解决它

以下是导致此异常的代码:

public void actionPerformed(ActionEvent e) {
    list.clearSelection();

    String selectString = " ";
    String afName = auth_fName.getText();
    String aMI = auth_MI.getText();
    String alName = auth_lName.getText();
    String tField = titleField.getText();
    String sField = subjectField.getText();

    try {
        Connection conn = Database.getConnection();

        Statement s = conn.createStatement();

        if (!afName.equals("") && (!aMI.equals("")) && (!alName.equals("")) && (!tField.equals("")) && (!sField.equals(""))) {
            selectString = "SELECT a.call_Number as callNbr "
                + "FROM book a "
                + "FULL JOIN transaction b "
                + "ON a.call_Number=b.call_Number";
        }

        s = conn.createStatement();
        System.out.println(selectString);
        ResultSet rs = s.executeQuery(selectString);

        while (rs.next()) {
            String call_Num = rs.getString("call_Number");
            String title = rs.getString("title");
            String auth_lName = rs.getString("auth_lName");
            String auth_MI = rs.getString ("auth_MI");
            String auth_fName = rs.getString("auth_fName");
            String availability = rs.getString("availability");

            view = new View(call_Num, title, auth_lName, auth_MI, auth_fName, availability);
            vList.add(view);
            System.out.println(view);
        }

        rs.close();
        s.close();
        conn.close();

        list.setListData(vList.toArray());
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
以下是DDL和内容:

s.executeUpdate (
    "CREATE TABLE book ("
    + "call_Number CHAR(10),"
    + "PRIMARY KEY (call_Number),"
    + "auth_fName CHAR(30)NOT NULL, auth_MI CHAR(2),"
    + "auth_lName CHAR(50)NOT NULL, title CHAR(100) NOT NULL,"
    + "subject CHAR(30) NOT NULL)");
count = s.executeUpdate (
    "INSERT INTO book"
    + " VALUES"
    + "('MY.111.000', 'Mark', 'M','Bradshaw','Mystery Under the Sun','mystery'),"
    + "('MY.111.001', 'Mark','','Twain','The Adventures of Huckleberry Finn','mystery'),"
    + "('SF.111.002', 'Kito', 'M','Bradford','Mr. Roboto','science fiction'),"
    + "('SF.111.003', 'Eric','','Laslow','Science Fiction - Can It Happen?','science fiction'),"
    + "('AV.111.004', 'Rashad','','Cheeks','Fire Under the Bridge','adventure'),"
    + "('AV.111.005', 'Samantha','A','Appleby','The Open Sea','adventure'),"
    + "('CO.111.006', 'Lindsey', '','Butterby','What? We cant spend anymore!?','comedy'),"
    + "('CO.111.007', 'Judy', 'S','Yates','So this is life?','comedy'),"
    + "('IN.111.008', 'Elizabeth', 'J','Lee','Mystery Under the Sun','international'),"
    + "('IN.111.009', 'Gabriella', 'M','Rodriguez','Love in Brazil','international')");
*******t_动作表***************************

使用如下所示的as谓词:-

selectString=选择一个电话号码作为callNbr。。。 +从a书 +完全联接事务b +a.呼叫号码=b.呼叫号码

然后更改代码以查找callNbr:-

字符串调用\u Num=rs.getStringcallNbr


HTH.

将您的查询更改为:

    selectString = "SELECT a.call_Number "
        + "FROM book a "
        + "INNER JOIN transaction b "
        + "ON a.call_Number=b.call_Number";

MySQL不支持完全外部联接。如果你真的需要这种效果,你需要2个选择和一个联合。虽然从外观上看,这似乎不是必要的。

哈哈哈!当我取下别名并只调用_号码时,我得到:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:字段列表中的“call_号码”列不明确。松头发拔:好的,这意味着call_Number列在两个表中,我应该从您的连接中注意到。我的错!请您尝试使用列名作为方法,如选择call\u Number作为callNbr?当我这样做时,我再次得到:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:字段列表中的“call\u Number”列不明确。我会用修改后的电话更新我的帖子,以确保我做得对。我以为我做了?我把它输入为:selectString=选择call\u号码作为callNbr、title、auth\u lName、auth\u fName、auth\u MI、transaction.availability+来自book+完全加入事务+在book上。call\u号码=transaction.call\u号码;仔细检查我发布的原始代码。我编辑它是为了显示修改后的代码以及您对变量callNbr的建议。我是否按照您的预期方式实现了它?好的,当我按照您的建议执行时,它工作了…当我删除transaction.availability.So时,我如何让它也在事务表中工作。我将availability列修改为“avail”,事务表修改为“t_action”。现在我有了代码:selectString=SELECT a.call_Number、title、auth_lName、auth_fName、auth_MI、b.t_action.avail+来自book a+内部连接t_action b+。call_Number=b.call_Number;当然,每当我输入它时,它都会给我一个非常熟悉的错误:“字段列表”中的未知列“b.t_action.avail”。有没有办法绕过它?而且,我只希望它选择我搜索的特定记录?我是否使用了正确的mySQL命令来实现这一点?我从大多数book表中获取值,并将它们组合到t_action表中的on值中。是这样吗?我正在努力避免裁员。那是不对的。它应该是b.avail而不是b.t_action.avail。@Mike-我会用这种方式为您的请求编写SQL-从书a事务b+中选择+,其中a.call_Number=b.call_Number;这就是我最初在没有“a”和“b”的情况下所做的。嗯,现在起作用了,;但是,它会打印出表中所有项的指定列的内容。它不止一个值。有什么想法吗?我使用的是您在上面指定的语句:selectString=a.call\u Number,title,auth\u lName,auth\u fName,auth\u MI,b.avail+,来自书a,t\u action b+,其中a.call\u Number=b.call\u Number;