1
我正在使用JDK 7,Access 2007和Microsoft數據庫引擎2010執行測試應用程序。 通過Java定義一個包含'REAL'數據類型字段的表並且在進入Float或Double時,它表示即使在輸入兼容數據類型時,「參數太少」錯誤
[Microsoft] [ODBC Microsoft Access Driver]參數太少。預計1.
但如果我直接輸入數字它接受。我應該使用哪些字段類型?
我正在使用JDK 7,Access 2007和Microsoft數據庫引擎2010執行測試應用程序。 通過Java定義一個包含'REAL'數據類型字段的表並且在進入Float或Double時,它表示即使在輸入兼容數據類型時,「參數太少」錯誤
[Microsoft] [ODBC Microsoft Access Driver]參數太少。預計1.
但如果我直接輸入數字它接受。我應該使用哪些字段類型?
使用DDL定義爲REAL
的列將在Access中創建爲「Number(Single)」,對應於JDBC中的Float
。所以,你需要使用.setFloat()
設置你的參數值,該列,如
String sql = "INSERT INTO TableName (RealField) VALUES (?)";
PreparedStatement ps = con.prepareStatement(sql);
ps.setFloat(1, 3.14F);
這是完整的測試代碼爲我的作品:
import java.sql.*;
public class JDBCQuery {
public static void main(String args[]) {
String connectionString = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};"
+ "DBQ=C:/Users/Public/mdbTest.mdb;";
String tableName = "zzzJavaTest";
String sql;
try (Connection con = DriverManager.getConnection(connectionString)) {
sql = String.format(
"DROP TABLE [%s]",
tableName);
try (Statement s = con.createStatement()) {
try {
s.executeUpdate(sql);
System.out.println("Old table dropped.");
} catch (SQLException e) {
if (e.getMessage().endsWith("does not exist.")) {
System.out.println("Table did not previously exist.");
} else {
throw e;
}
}
} catch (Exception e) {
e.printStackTrace(System.out);
System.exit(0);
}
sql = String.format(
"CREATE TABLE [%s] (id COUNTER PRIMARY KEY, numfield REAL)",
tableName);
try (Statement s = con.createStatement()) {
s.executeUpdate(sql);
System.out.println("New table created.");
} catch (Exception e) {
e.printStackTrace(System.out);
System.exit(0);
}
sql = String.format(
"INSERT INTO [%s] (numfield) VALUES (?)",
tableName);
try (PreparedStatement ps = con.prepareStatement(sql)) {
ps.setFloat(1, 3.14F);
ps.executeUpdate();
System.out.println("New row added.");
} catch (SQLException e) {
e.printStackTrace(System.out);
System.exit(0);
}
} catch (Exception e) {
e.printStackTrace(System.out);
System.exit(0);
}
}
}
請張貼堆棧跟蹤和任何相關的代碼片段。這將有助於我們理解和診斷問題。 – Thihara 2014-10-09 07:32:15
尋求調試幫助的問題(「**爲什麼不是這個代碼工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身**中重現**所需的最短代碼。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – DavidPostill 2014-10-09 08:09:10