gpt4 book ai didi

java - "Too few parameters"错误,即使我输入兼容的数据类型

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:48 26 4
gpt4 key购买 nike

我正在使用 JDK 7、Access 2007 和 Microsoft Database Engine 2010 进行测试应用程序。当我通过 Java 定义一个带有“REAL”数据类型字段的表并在输入 Float 或 Double 时,它​​会显示

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 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);
}
}

}

关于java - "Too few parameters"错误,即使我输入兼容的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26272482/

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