Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.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 JDBCSQLite出现奇怪的错误_Java_Sqlite_Jdbc - Fatal编程技术网

Java JDBCSQLite出现奇怪的错误

Java JDBCSQLite出现奇怪的错误,java,sqlite,jdbc,Java,Sqlite,Jdbc,我不停地遇到这个错误,我不知道如何修复它。下面我添加了代码和堆栈。提前感谢大家的帮助 第一个片段是初始化表的方式,然后是出现错误的地方:(void refresh,这一行listModel.addElement(result.getString(“id_Match”)+“|”+result.getString(“Name”),然后堆栈 String createCity = "CREATE TABLE IF NOT EXISTS City(id_City INTEGER PRIM

我不停地遇到这个错误,我不知道如何修复它。下面我添加了代码和堆栈。提前感谢大家的帮助

第一个片段是初始化表的方式,然后是出现错误的地方:(void refresh,这一行
listModel.addElement(result.getString(“id_Match”)+“|”+result.getString(“Name”)
,然后堆栈

        String createCity = "CREATE TABLE IF NOT EXISTS City(id_City INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR(70) NOT NULL, Country VARCHAR(70) NOT NULL, Continent VARCHAR(70))";
        String createCourt = "CREATE TABLE IF NOT EXISTS Court(id_Court INTEGER PRIMARY KEY AUTOINCREMENT, id_City INTEGER REFERENCES City(id_City), Type VARCHAR(70) NOT NULL, Isset VARCHAR(70) NOT NULL)";
        String createMatch = "CREATE TABLE IF NOT EXISTS Match(id_Match INTEGER PRIMARY KEY AUTOINCREMENT, id_Court INTEGER REFERENCES Court(id_Court), id_Player INTEGER REFERENCES Player(id_Player), id_Player1 INTEGER REFERENCES Player(id_Player))";
        String createPlayer = "CREATE TABLE IF NOT EXISTS Player(id_Player INTEGER PRIMARY KEY AUTOINCREMENT, Name VARCHAR(70),WL FLOAT, Money REAL CHECK ( Money>0))";

public void refresh() {
        if(!listModel.isEmpty()) {
            listModel.removeAllElements();
        }
        try {
            connection = DriverManager.getConnection(DB_URL);
            statement = connection.createStatement();
            result = statement.executeQuery("SELECT m.id_Match, p.Name, p1.Name, c.Type FROM Court c, Match m, Player p, Player p1  WHERE m.id_Court=c.id_Court AND p.id_Player=m.id_Player AND p1.id_Player=m.id_Player1");
            while(result.next()) {
                listModel.addElement(result.getString("id_Match") + " | " + result.getString("Name") + " | " + result.getString("Type"));
            }
            if(statement!=null) {
                statement.close();
            }
            if(connection!=null) {
                connection.close();
            }
        }
        catch(SQLException e) {
            System.err.println("Błąd przy odświeżaniu listy");
            e.printStackTrace();
        }
    }
例外情况

        Błąd przy odświeżaniu listy
    java.sql.SQLException: ambiguous column: 'Name'
        at org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49)
        at org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:448)
        at Match.refresh(Match.java:85)
        at interf.<init>(interf.java:25)
        at mainF.<init>(mainF.java:15)
        at mainF$1.run(mainF.java:35)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
        at org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:700)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    Błąd przy odświeżaniu listy
    java.sql.SQLException: ambiguous column: 'Name'
        at org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49)
        at org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:448)
        at Match.refresh(Match.java:85)
        at interf$TabbedPaneListener.stateChanged(interf.java:256)
        at javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:416)
        at javax.swing.JTabbedPane$ModelListener.stateChanged(JTabbedPane.java:270)
        at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:132)
        at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:67)
        at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:616)
        at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:591)
        at javax.swing.JTabbedPane.insertTab(JTabbedPane.java:731)
        at javax.swing.JTabbedPane.addTab(JTabbedPane.java:798)
        at javax.swing.JTabbedPane.add(JTabbedPane.java:835)
        at interf.<init>(interf.java:30)
        at mainF.<init>(mainF.java:15)
        at mainF$1.run(mainF.java:35)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
        at org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:700)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Błd przy odświeżaniu listy

java.sql.SQLException:不明确的列:“名称” 位于org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49) 位于org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:448) at Match.refresh(Match.java:85) 国际文传杂志(国际文传杂志java:25) 在mainF(mainF.java:15) mainF$1.run(mainF.java:35) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 位于org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:700) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Błd przy odświeżaniu listy
java.sql.SQLException:不明确的列:“名称” 位于org.sqlite.jdbc3.JDBC3ResultSet.findColumn(JDBC3ResultSet.java:49) 位于org.sqlite.jdbc3.JDBC3ResultSet.getString(JDBC3ResultSet.java:448) at Match.refresh(Match.java:85) 位于interf$TabbedPaneListener.stateChanged(interf.java:256) 位于javax.swing.JTabbedPane.fireStateChanged(JTabbedPane.java:416) 位于javax.swing.JTabbedPane$modelstener.stateChanged(JTabbedPane.java:270) 位于javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:132) 位于javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:67) 位于javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:616) 位于javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:591) 位于javax.swing.JTabbedPane.insertTab(JTabbedPane.java:731) 位于javax.swing.JTabbedPane.addTab(JTabbedPane.java:798) 位于javax.swing.JTabbedPane.add(JTabbedPane.java:835) 国际文传杂志(国际文传杂志java:30) 在mainF(mainF.java:15) mainF$1.run(mainF.java:35) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) 在java.awt.EventQueue.access$500(EventQueue.java:97) 在java.awt.EventQueue$3.run(EventQueue.java:709) 在java.awt.EventQueue$3.run(EventQueue.java:703) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:726) 位于org.GNOME.Accessibility.AtkWrapper$5.dispatchEvent(AtkWrapper.java:700) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
选择中的两列被命名为
Name

SELECT m.id_Match, p.Name, p1.Name ...
然后你试着用一个

result.getString("Name")
程序应该如何知道是哪一个呢?它是不清楚的——就像错误所说的那样模棱两可

至少为其中一个使用不同的别名

SELECT m.id_Match, p.Name as p_name, p1.Name as p1_name ...

select中的两列被命名为
Name

SELECT m.id_Match, p.Name, p1.Name ...
然后你试着用一个

result.getString("Name")
程序应该如何知道是哪一个呢?它是不清楚的——就像错误所说的那样模棱两可

至少为其中一个使用不同的别名

SELECT m.id_Match, p.Name as p_name, p1.Name as p1_name ...

java.sql.SQLException:不明确的列:“Name”-这一列。可能有错误,因为我在Match中有两个外键,它引用了Player中的一个主键(因为在Match中我需要两个玩家id,因为Match是对两个玩家的)java.sql.SQLException:不明确的列:“Name”-这一列。可能有错误,因为我在Match中有两个外键,它引用了Player中的一个主键(因为在Match中我需要两个玩家id,因为Match是对两个玩家的)