gpt4 book ai didi

java select 语句不起作用

转载 作者:行者123 更新时间:2023-12-01 23:53:46 25 4
gpt4 key购买 nike

我试图从 Access DB(2010) 中的表返回记录,但每次运行该语句时,我都会收到此错误:

线程中的异常“AWT-EventQueue-0”java.lang.NullPointerException我初始化 stmt

的地方

我没有在这段代码中显示数据库的名称。这是我的代码:

public class util {

static String path = "path to db";
static String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+path;

static Connection conn ;
static Statement s;

public static boolean ajouterFormule(String formule){
boolean success = false;
PreparedStatement stmt;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(database, "", "");
String ajout_sql = "INSERT INTO FORMULE(form_nom)"
+ "VALUES(?)";

stmt= conn.prepareStatement(ajout_sql);
stmt.setString(1, formule);
int num_row = stmt.executeUpdate();
if(num_row > 0)
success =true;
}
catch(Exception e){
System.out.println(e.getMessage());
System.out.println("ERROR2");
}
return success;
}


public static String[] getFormule()throws SQLException{
String[] arr = new String[10];
String getFormSql = "SELECT form_nom, form_statut "
+ "from formule";
int i=0;
System.out.println("NO");
//Statement stmt = null;
// ResultSet rs ;
try{
Statement stmt = conn.createStatement();
// System.out.println(stmt);
stmt.execute(getFormSql);
ResultSet rs = s.getResultSet();
while(rs.next()){
String txt = rs.getString("form_nom");
// arr[i] = rs.getString("form_nom");
System.out.println("Nothing..."+txt);

i++;
}
}
catch(SQLException e){
System.out.println(e.getMessage());
System.out.println("Error..");
}
System.out.print("Length "+ arr.length);

return arr;
}

}

最佳答案

getFromSql 等于“SELECT form_nom,form_statutfrom formule”,你必须写:

String getFormSql = "SELECT form_nom,form_statut "
+ "from formule";

注意statut后面的空格“”

编辑:当你这样做时也是如此

Statement stmt =  conn.createStatement();
// System.out.println(stmt);
stmt.execute(getFormSql);
ResultSet rs = s.getResultSet();

您从与刚刚执行的语句不同的语句中读取 ResultSet。

编辑之二:您初始化连接的方式也搞砸了。它是一个静态字段,但只有在调用插入方法“ajouterFormule”时才初始化它:

conn = DriverManager.getConnection(database, "", ""); 

您不会在选择方法“getFormule”中执行此操作,因此如果您选择而不先插入,您的连接将为空。

删除静态字段(conn 和 s),并在连接和语句的每个方法中使用本地字段(而且,完成插入/选择后应关闭它们)。

关于java select 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com