加载和显示信息SQLite和数据库时出错(java.sql.SQLException)

时间:2017-11-15 17:56:03

标签: java database sqlite csv sqlexception

我无法从java中的CSV文件加载。我需要加载信息并使用SQLite 3然后显示它。我必须创建一个表并将我的信息加载到该表。现在,我坚持这些错误。

sql1: create table if not exists Games(Gamesupc integer, name varchar(10), type varchar(10), release integer, rating varchar(3))
insert into Games (Gamesupc, name,  type, release, rating) values (1001, 'FIFA 18', 'Sports', 2017, 'E');
SQLException.
java.sql.SQLException: table Games has no column named rating

加载:

import java.io.File;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class LoadGames {

    public static void main(String[] args) {
        Connection c = null;
        Statement s = null;
        Scanner fromFile = null;
        String sql1 = null, sql2 = null;
        String line = null, name = null, type = null, rating = null;
        String[ ] fields;
        int release = 0; 

        try {
            // Define Connection and Statement objects.
            Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection("jdbc:sqlite:Games.db");
            s = c.createStatement();

            // Instantiate scanner to read from file.
            fromFile = new Scanner(new File ("Games.csv"));


            // Create Games table.
            sql1 = "create table if not exists " +
                    "Games(Gamesupc integer, " +
                    "name varchar(10), " +
                    "type varchar(10), " +
                    "release integer, " +
                    "rating varchar(3))";
                System.out.println("sql1: " + sql1);
                s.executeUpdate(sql1);

            // Populate Games table.
            for (int upc = 1001; fromFile.hasNextLine( ); upc++) {
                line = fromFile.nextLine( ); 
                fields = line.split(",");
                name = fields[1].trim( );
                type = fields[2].trim( );
                release = Integer.parseInt(fields[3].trim( ));
                rating = fields[4].trim();
                sql2 = String.format(
                    "insert into Games (Gamesupc, name,  type, release, rating) " +
                    "values (%d, '%s', '%s', %d, '%s');", 
                    upc, name, type, release, rating);
                System.out.println(sql2);
                s.executeUpdate(sql2);
            }
            c.close( );
        }
        catch (FileNotFoundException e) {
            System.out.println("File queries.sql not found.");
            System.err.println( e.getClass().getName() + 
                ": " + e.getMessage() );
        }
        catch(SQLException e) {
            System.out.println("SQLException.");
            System.err.println( e.getClass().getName() + 
                ": " + e.getMessage() );
        }
        catch (ClassNotFoundException e ) {
            System.err.println( e.getClass().getName() + 
                ": " + e.getMessage() );
        }
        finally {
            fromFile.close( );
        }
    }
}

显示:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class DisplayGames {

    public static void main(String[] args) {
        Connection c = null;
        Statement s = null;
        ResultSet rs = null;
        int upc = 0, release = 0;
        String sql = null, name = null,  type= null, rating = null;
        Scanner fromKeyboard = new Scanner(System.in);

        try {
            // Define Connection and Statement objects.
            Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection("jdbc:sqlite:Games.db");
            s = c.createStatement();

            while (upc != -1) {
                // Read id and display corresponding table row.
                System.out.print("Enter Product UPC: ");
                upc = fromKeyboard.nextInt( ); 
                sql = "select name, type, release, rating from Games " +
                    "where Gamesupc = " + upc + ";";
                System.out.println(sql);
                rs = s.executeQuery(sql);
                while (rs.next( )) {
                    name = rs.getString("name");
                    type = rs.getString("type");
                    release = rs.getInt("release");
                    rating = rs.getString("rating");
                    System.out.println("Name: " + name);
                    System.out.println("Type: " + type);
                    System.out.println("Release: " + release);
                    System.out.println("Rating: " + rating);
                }
            }
        }
        catch(SQLException e) {
            System.out.println("SQLException.");
            System.err.println( e.getClass().getName() + 
                ": " + e.getMessage() );
        }
        catch (ClassNotFoundException e ) {
            System.err.println( e.getClass().getName() + 
                ": " + e.getMessage() );
        }
        finally {
            fromKeyboard.close( );
        }

    }

}

CSV:

1001 FIFA 18 Sports 2017 E

1002 COD 3射击2006 T

1003 NHL 12 Sports 2011 E

0 个答案:

没有答案