我无法从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