gpt4 book ai didi

java - Java 中的 MS Access 删除查询引发 java.sql.SQLException

转载 作者:行者123 更新时间:2023-12-01 11:09:09 24 4
gpt4 key购买 nike

我正在尝试通过 java 执行一个简单的删除查询。我使用的代码如下。所有其他查询(例如选择和更新查询)都可以工作。 ID是用户输入的值,已存储为字符串。

int rs5 = fk.conn.createStatement().executeUpdate("DELETE * FROM tblKites WHERE tblKites.ID = " + ID + "");

错误消息是:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

最佳答案

有什么理由不使用 PreparedStatement的?

PreparedStatement preparedStatement = connection.prepareStatement("DELETE * FROM tblKites WHERE tblKites.ID = ?");
preparedStatement.setString(1,idValue);
ResultSet rs = preparedStatement.executeUpdate();

参见here 有关如何使用 JDBCPreparedStatement 删除记录的具体示例。

注意:

由于上述链接中的 JDBCPreparedStatement 示例使用 Oracle 数据库并且您使用的是 MSAccess,因此您可以考虑使用 JDBC以及UCanAccess API连接到您的 MSAccess 数据库。

您的项目构建路径中需要的其他 jar 是:

commons-lang-2.6.jar
commons-logging-1.1.1.jar
hsqldb.jar
jackcess-2.1.0.jar
ucanaccess-2.0.9.5.jar

示例:

下面的示例(在 JDK 8 上运行良好)初始化远程数据库连接将记录插入到 MS Access 数据库中并关闭连接 em>.

/**
* Connects to a remote MS-Access DB using JDBC/UCanAccess API.
*
* ADDITIONAL JARS REQD:
*
* commons-lang-2.6.jar
* commons-logging-1.1.1.jar
* hsqldb.jar
* jackcess-2.1.0.jar
* ucanaccess-2.0.9.5.jar
*
*/
package miscellaneous;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;


public class ConnectRemoteDB {

public static void main(String[] args) {
initializeConnection();
}

/**
* Initializes remote database connection and inserts a record and closes the connection.
*/
private static void initializeConnection() {
System.out.println("Attempting Database Connection...");
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = DriverManager
.getConnection("jdbc:ucanaccess:////IP ADDRESS/shared-folder-name/TestDB.mdb"); // Replace IP ADDRESS with the actual IP ADDRESS
System.out.println("CONNECTION ESTABLISHED....");
String insertTableSQL = "INSERT INTO Table1" + "(Name) VALUES"
+ "(?)";
preparedStatement = connection.prepareStatement(insertTableSQL);
preparedStatement.setString(1, "Sandeep");
preparedStatement.executeUpdate();
System.out.println("RECORD INSERTED...");
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
connection.close();
System.out.println("CONNECTION CLOSED...");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

关于java - Java 中的 MS Access 删除查询引发 java.sql.SQLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32572898/

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