在JavaSQLite中获取NullPointerException
我编写这个方法是为了在java中从SQLite表中获取结果在JavaSQLite中获取NullPointerException,java,sqlite,Java,Sqlite,我编写这个方法是为了在java中从SQLite表中获取结果 public String[][] select(String query, String table) throws ClassNotFoundException, SQLException { Connection con; Statement st; Class.forName("org.sqlite.JDBC"); con = DriverManager.getConnection("jd
public String[][] select(String query, String table) throws ClassNotFoundException, SQLException
{
Connection con;
Statement st;
Class.forName("org.sqlite.JDBC");
con = DriverManager.getConnection("jdbc:sqlite:"+table);
con.setAutoCommit(false);
st = con.createStatement();
ResultSet rs = st.executeQuery(query);
String[][] result = new String[100][4];
int j = 0;
while ( rs.next() ) {
String name = rs.getString("fullname");
String username = rs.getString("username");
String password = rs.getString("password");
String email = rs.getString("email");
result[j][0] = name; // line number 63
result[j][1] = username;
result[j][2] = password;
result[j][3] = email;
j++;
}
rs.close();
st.close();
con.close();
return result;
}
从我的主方法中,我实例化了这个方法:
try{
String[][] data = db.select("SELECT * FROM user", "fliplist.db"); // line number 37
System.out.println(data);
} catch (ClassNotFoundException | SQLException e){
System.out.println(e.getMessage());
}
这给了我一个错误:
run:
Exception in thread "main" java.lang.NullPointerException
at FlipList.Database.select(Database.java:63)
at FlipList.FlipList.main(FlipList.java:37)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
为了获取结果,它应该是怎样的
更新
我已经初始化了数组的第二维度,现在它显示了这个错误(很可能是garbez值):
如何返回数组?(感谢@lea;如果他们发布了一个数组,请告诉我)
您还需要初始化内部数组。在您的while循环中,将类似这样的内容放在顶部,它应该会起作用
data[j] = new String[4];
对于新错误,您希望遍历数组,而不是仅打印它。例如:
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
System.out.print(data[i][j] + "\t\t");
}
System.out.println();
}
您还需要将数据的声明更改为ArrayList result=new ArrayList()
,而不是String[][]result=…
(这要感谢@lea;如果他们发布了一个,请告诉我)
您还需要初始化内部数组。在您的while循环中,将类似这样的内容放在顶部,它应该会起作用
data[j] = new String[4];
对于新错误,您希望遍历数组,而不是仅打印它。例如:
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
System.out.print(data[i][j] + "\t\t");
}
System.out.println();
}
您还需要将数据的声明更改为ArrayList result=new ArrayList()
,而不是String[][]result=…
(这要感谢@lea;如果他们发布了一个,请告诉我)
您还需要初始化内部数组。在您的while循环中,将类似这样的内容放在顶部,它应该会起作用
data[j] = new String[4];
对于新错误,您希望遍历数组,而不是仅打印它。例如:
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
System.out.print(data[i][j] + "\t\t");
}
System.out.println();
}
您还需要将数据的声明更改为ArrayList result=new ArrayList()
,而不是String[][]result=…
(这要感谢@lea;如果他们发布了一个,请告诉我)
您还需要初始化内部数组。在您的while循环中,将类似这样的内容放在顶部,它应该会起作用
data[j] = new String[4];
对于新错误,您希望遍历数组,而不是仅打印它。例如:
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
System.out.print(data[i][j] + "\t\t");
}
System.out.println();
}
您还需要将data
的声明更改为ArrayList result=new ArrayList()
,而不是String[][]result=…
一些非常基本的东西。请在数据库上执行查询并查看它返回的内容(有时查询可能不正确,例如表名可以是“users”而不是“user”,只是猜测):-
从用户选择*
如果上面没有问题,请尝试使用“columnIndex”而不是“columnName”提取行。e、 g
String name = rs.getString(1);
String username = rs.getString(2);
String password = rs.getString(3);
String email = rs.getString(4);
这里我假设名称、用户名、密码和电子邮件分别属于第1、第2、第3和第4列
一些非常基本的东西。请在数据库上执行查询并查看它返回的内容(有时查询可能不正确,例如表名可以是“users”而不是“user”,只是猜测):-
从用户选择*
如果上面没有问题,请尝试使用“columnIndex”而不是“columnName”提取行。e、 g
String name = rs.getString(1);
String username = rs.getString(2);
String password = rs.getString(3);
String email = rs.getString(4);
这里我假设名称、用户名、密码和电子邮件分别属于第1、第2、第3和第4列
一些非常基本的东西。请在数据库上执行查询并查看它返回的内容(有时查询可能不正确,例如表名可以是“users”而不是“user”,只是猜测):-
从用户选择*
如果上面没有问题,请尝试使用“columnIndex”而不是“columnName”提取行。e、 g
String name = rs.getString(1);
String username = rs.getString(2);
String password = rs.getString(3);
String email = rs.getString(4);
这里我假设名称、用户名、密码和电子邮件分别属于第1、第2、第3和第4列
一些非常基本的东西。请在数据库上执行查询并查看它返回的内容(有时查询可能不正确,例如表名可以是“users”而不是“user”,只是猜测):-
从用户选择*
如果上面没有问题,请尝试使用“columnIndex”而不是“columnName”提取行。e、 g
String name = rs.getString(1);
String username = rs.getString(2);
String password = rs.getString(3);
String email = rs.getString(4);
这里我假设名称、用户名、密码和电子邮件分别属于第1、第2、第3和第4列。我将ArrayList重新定义为字符串列表,而不是数组
public void tester()
{
ArrayList result = new ArrayList();
try
{
Connection connect = DriverManager.getConnection(host, username, password);
String sql="select * from FRIENDS";
Statement stmt=connect.createStatement();
ResultSet rs=stmt.executeQuery(sql);
String[] nextRow = new String[4];
while ( rs.next() ) {
String firstname = rs.getString("FIRSTNAME");
String lastusername = rs.getString("LASTNAME");
String nickname = rs.getString("NICKNAME");
String friendsince = rs.getString("FRIENDSINCE");
String email = rs.getString("EMAIL");
System.out.print("Firstname :- "+firstname+" lastname :- "+lastusername+" nickname :- "+nickname+" friendsince :- "+friendsince+" Email :- "+email);
nextRow[0] = firstname;
nextRow[1] = lastusername;
nextRow[2] = nickname;
nextRow[3] = email;
System.out.println("The values in array are :- "+nextRow);
int i=0;
for(i=0;i<nextRow.length;i++)
{
String add1=nextRow[i];
result.add(add1);
}
}
}
public void tester()
{
ArrayList结果=新建ArrayList();
尝试
{
Connection connect=DriverManager.getConnection(主机、用户名、密码);
String sql=“从朋友中选择*”;
语句stmt=connect.createStatement();
结果集rs=stmt.executeQuery(sql);
字符串[]nextRow=新字符串[4];
while(rs.next()){
String firstname=rs.getString(“firstname”);
字符串lastusername=rs.getString(“LASTNAME”);
字符串昵称=rs.getString(“昵称”);
String-friendsince=rs.getString(“friendsince”);
String email=rs.getString(“电子邮件”);
系统输出打印(“Firstname:-“+Firstname+”lastname:-“+lastusername+”昵称:-“+昵称+”friendsince:-“+friendsince+”电子邮件:-”+电子邮件);
nextRow[0]=firstname;
nextRow[1]=lastusername;
nextRow[2]=昵称;
nextRow[3]=电子邮件;
System.out.println(“数组中的值为:-”+nextRow);
int i=0;
对于(i=0;i我将ArrayList重新定义为字符串列表,而不是数组
public void tester()
{
ArrayList result = new ArrayList();
try
{
Connection connect = DriverManager.getConnection(host, username, password);
String sql="select * from FRIENDS";
Statement stmt=connect.createStatement();
ResultSet rs=stmt.executeQuery(sql);
String[] nextRow = new String[4];
while ( rs.next() ) {
String firstname = rs.getString("FIRSTNAME");
String lastusername = rs.getString("LASTNAME");
String nickname = rs.getString("NICKNAME");
String friendsince = rs.getString("FRIENDSINCE");
String email = rs.getString("EMAIL");
System.out.print("Firstname :- "+firstname+" lastname :- "+lastusername+" nickname :- "+nickname+" friendsince :- "+friendsince+" Email :- "+email);
nextRow[0] = firstname;
nextRow[1] = lastusername;
nextRow[2] = nickname;
nextRow[3] = email;
System.out.println("The values in array are :- "+nextRow);
int i=0;
for(i=0;i<nextRow.length;i++)
{
String add1=nextRow[i];
result.add(add1);
}
}
}
public void tester()
{
ArrayList结果=新建ArrayList();
尝试
{
Connection connect=DriverManager.getConnection(主机、用户名、密码);
String sql=“从朋友中选择*”;
语句stmt=connect.createStatement();
结果集rs=stmt.executeQuery(sql);
字符串[]nextRow=新字符串[4];
while(rs.next()){
String firstname=rs.getStr