这是示例数据库的链接我希望此代码连接到我的数据库并加密表“WellTable”中的行,不幸的是我收到下面列出的错误。我在这里遵循了指南:Manipulating an Access database from Java without ODBC ...我正在使用 Atom IDE。import java.security.Key;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;import java.util.Scanner;import java.sql.*;/*import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.sql.ResultSet;*/public class hippa { public static void main(String[] args) { //String databaseURL = "jdbc:ucanaccess://C:/Users/al3cz/OneDrive/Desktop/hippaProject/WellnessMerge.accdb"; String passkey = ""; // field for passkey int dctnum = 0; //dct loop number final String key = "Pass1234Pass1234"; // 128 bit key String ID = ""; int x = 0; try { //connect to the database and get ID Connection dbConnection = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/al3cz/OneDrive/Desktop/hippaProject/WellnessMerge.accdb"); Statement readID = dbConnection.createStatement(); String sql = "SELECT [CID] FROM [WellTable]"; ResultSet rs = readID.executeQuery(sql); while (rs.next()) { ID = rs.getString("CID"); //ID = "863784593"; // Create key and cipher Key aesKey = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES"); //TODO create GUI button that Encrypts all IDs // encrypts the ID cipher.init(Cipher.ENCRYPT_MODE, aesKey); byte[] encryptedID = cipher.doFinal(ID.getBytes()); StringBuilder sb = new StringBuilder(); for (byte b: encryptedID) { sb.append((char)b); }
1 回答

幕布斯7119047
TA贡献1794条经验 获得超8个赞
现在你有一个可以回答的问题:
如果您阅读文档,java.sql.Connection.createStatement()
您会看到:
使用返回的 Statement 对象创建的结果集默认类型为 TYPE_FORWARD_ONLY,并发级别为 CONCUR_READ_ONLY。
因此,要使其可更新,您必须使用另一个构造函数来更改它:
Statement readID = dbConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
net.ucanaccess.jdbc.UcanaccessSQLException的副本:尝试分配给不可更新的列
添加回答
举报
0/150
提交
取消