为了账号安全,请及时绑定邮箱和手机立即绑定

UCAExc:::4.0.4 尝试分配给不可更新的列

UCAExc:::4.0.4 尝试分配给不可更新的列

隔江千里 2022-12-15 16:20:39
这是示例数据库的链接我希望此代码连接到我的数据库并加密表“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的副本:尝试分配给不可更新的列


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号