猿问

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

这是示例数据库的链接我希望此代码连接到我的数据库并加密表“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);

                }

                

隔江千里
浏览 122回答 1
1回答

幕布斯7119047

现在你有一个可以回答的问题:如果您阅读文档,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的副本:尝试分配给不可更新的列
随时随地看视频慕课网APP

相关分类

Java
我要回答