Tag: ms access

使用JDBC和编译将Microsoft Access数据库连接到Java

对于学校数据库项目,我们正在制作数据库程序(用户GUI和数据库)。 使用Microsoft Access 2010我创建了数据库并使用一些示例数据填充它,并将其保存为.mdb格式并将其放在我的项目文件夹中。 在eclipse中运行它时,以下代码工作正常,连接甚至检索查询。 但是我发现我无法将代码导出到jar并运行它(这是项目所需的,在CD或闪存驱动器上为它们提供程序的工作副本),而且我也无法移植代码到Netbeans让它工作,以及尝试在Linux机器上编译。 我认为这是包含驱动程序或尝试使用Microsoft访问的问题。 运行jar或在Netbeans上运行时得到的错误在代码下方给出。 所以我要么问我如何包含驱动程序以使程序可移植,或者我如何处理这个问题呢? 提前致谢 import java.sql.*; public class JDBCTest { static Connection connection; static Statement statement; public static void main(String args[]){ try { Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance(); String database = “jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=TLDATABASEDBM.mdb”; connection = DriverManager.getConnection( database ,””,””); buildStatement(); executeQuery(); }catch(Exception e){ e.printStackTrace(); System.out.println(“Error!”); } } public static void buildStatement() throws […]

检索解密数据时出现问题

我正在研究加密 – 解密程序。 程序从用户获取输入并加密。 然后它将加密数据存储在ms访问数据库表中。 稍后,从表中检索数据,解密并返回给用户。 我将数据存储为ms访问中的文本。 加密算法返回一个大小为16的字节数组。但是当我从数据库中检索数据时,我得到一个大小为8的字节数组。 帮我解决这个问题……

64位Java无法通过ODBC访问32位MS Access数据库

我有一台新的64位笔记本电脑,并安装了STS 64位和Java 64位。 我正在尝试创建一个32-bi Microsoft数据库的ODBC连接; 但是默认的管理工具不提供访问驱动程序。 谷歌搜索后,我看到有一个管理工具,用于创建位于C:\ Windows \ SysWOW64 \ odbcad32.exe中的32位驱动程序。 但是,从中创建的ODBC连接会在运行程序时向我提供一条错误消息,指示体系结构不匹配: “[Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配” 我认为这是因为64位Java正在尝试使用32位驱动程序。 为了解决这个问题,我尝试将参数“-D32”放在VM参数中,但结果相同。 我正在考虑卸载STS和Java并用32位版本替换它们。 有更好的解决方案吗?

使用Jackcess Encrypt会导致Cobertura出现“NoClassDefFoundError”exception

我正在尝试用一个非常简单的程序读取带有jet编码的mdb文件。 import java.io.File; import java.io.IOException; import com.healthmarketscience.jackcess.CryptCodecProvider; import com.healthmarketscience.jackcess.Database; import com.healthmarketscience.jackcess.DatabaseBuilder; import com.healthmarketscience.jackcess.Row; import com.healthmarketscience.jackcess.Table; public class ReadFile { public static void main(String[] args) { // TODO Auto-generated method stub try { File myDbFile = new File(“C:\\Users\\jcace\\Downloads\\TSC\\DB1.mdb”); Database db = new DatabaseBuilder(myDbFile) .setCodecProvider(new CryptCodecProvider()) .open(); Table table = db.getTable(“VBV”); for(Row row : table) { System.out.println(“Look […]

如何使用UCanAccess改变表

我正在使用UCanAccess JDBC驱动程序(版本3.0.3.1)连接到mdb文件。 我需要将列添加到现有表中。 问题在于声明 ALTER TABLE TEmployee ADD COLUMN NotificationsEnabled BINARY 抛出exception: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.xx Feature not supported yet. 似乎没有更新版本的UCanAccess。 在这种情况下我该怎么办? 我不想使用ODBC驱动程序有很多原因(这里描述 – 在没有ODBC的情况下从Java操作Access数据库 ) 我看到的唯一解决方案是创建表的副本(例如TEmployeeBackup)来保存数据,然后使用新字段删除并重新创建原始表,然后将数据从TEmployeeBackup移回TEmployee。 但这个解决方案对我来说似乎很糟糕。

使用Java将Oracle数据库迁移到MS Access的最佳方法是什么?

这可能是一个非常基本的问题,但我可以从StackOverflow的专家处获得一些帮助。 我只是头脑风暴,权衡所有可用的选项。 所以,我不需要帮助代码。 但是,一些建议或想法会有所帮助。 这是我认为可行的方法: 使用JDBC建立与Oracle的ad / b连接 运行SQL语句以从Oracle获取数据 存储在数据结构中获得的数据 使用JDBC-ODBC桥驱动程序建立与MS Access的ad / b连接 在Access中创建一个新的d / b并使用SQL将其插入其中 关闭连接 有没有更简单或更有效的方法来做到这一点? 另外,这个过程需要为几个客户完成,而ad / b中的每个表都有数百万条记录。 手动执行此过程会花费大量时间,因此这不是一个可行的选择。 好吧,我讨厌让这个变得复杂。 但是,从Oracle导入数据后,我们正在使用Java代码操作数据。 因此,在数据转换之后,我们希望将其迁移到MS Access并将其发送到客户端。 我非常感谢您的时间和帮助。

如何将Java TimeStamp转换为ms访问日期?

我想将一个java时间戳插入一个msaccess数据库,但我收到一个错误,如下所示。 ms-access字段已设置为DATE数据类型。 任何建议都将深表感谢。 谢谢 这是我的DAO类方法: public void addSale(String saleDetails, String saleTotal, Timestamp saleTimestamp) throws ClassNotFoundException, SQLException { Statement myStatement = getConnection(); String sql = “INSERT INTO Sale (SaleDetails, SaleTotal, SaleTimestamp)” + ” VALUES (‘”+saleDetails+”‘,'”+saleTotal+”‘,'”+saleTimestamp+”‘)”; myStatement.executeUpdate(sql); closeConnection(); 我的DTO方法: public void storeSale(String saleDetails, String saleTotal, Timestamp saleTimestamp){ DAO dao = DAO.getDAO(); try { dao.addSale(saleDetails, saleTotal, saleTimestamp); } […]

Java无法通过JDBC-ODBC从Access检索Unicode(立陶宛语)字母

我有DB,其中一些名字是用立陶宛字母写的,但是当我试图用java创建它时,它会忽略立陶宛字母 DbConnection(); zadanie=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); sql=”SELECT * FROM Clients;”; dane=zadanie.executeQuery(sql); String kas=”Imonė”; while(dane.next()) { String var=dane.getString(“Pavadinimas”); if (var!= null) {var =var.trim();} String rus =dane.getString(“Rusys”); System.out.println(kas+” “+rus); } void DbConnection() throws SQLException { String baza=”jdbc:odbc:DatabaseDC”; try { Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); }catch(Exception e){System.out.println(“Connection error”);} connect=DriverManager.getConnection(baza); } 在DB类型的字段中是TEXT,大小为20,不要使用任何额外的字母解码或类似的东西。 它给了我“ImonėImone”尽管在DB中写的是“Imonė”,它等于rus。

在java中获取无效的游标状态exception

我运行了select命令并使用下面的代码在system.out中打印结果。 无效的游标错误导致预期结果。 请问任何一个人告诉我,为什么在打印预期结果后发生了这个错误以及如何修复它? 码: try { Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url = “jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=” + “path”; conn = DriverManager.getConnection(url); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); String select=”SELECT DISTINCT col1,col2 FROM Tablename”; ResultSet rs = stmt.executeQuery(select); ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount(); String columnValue; while (rs.next()) { for (int i = 1; i <= columnsNumber; i++) […]

从JAR运行时“找不到合适的驱动程序”

我开发了一个小游戏,其中用户输入的文本需要在MS Access数据库中发布。 这一切在NetBeans中都可以正常工作,但每当我从JAR文件访问它时(最终我需要将其传递给我的客户端),它不会向数据库发布任何内容。 实际上它返回以下错误: java.sql.SQLException: No suitable driver found for jdbc:ucanaccess://C:\Users\Paul\Desktop\Spelli\RispostiDB.mdb 这是相关代码: public void postAnsDB() { String tableName = “Form”+studentGroup +”_”+studentSurname+”_”+studentName+””; answerModifier(); try{ String strurl=”jdbc:ucanaccess://C:\\Users\\Paul\\Desktop\\Spelli\\RispostiDB.mdb”; Connection conn=DriverManager.getConnection(strurl, “”, “”); Statement stmt=conn.createStatement(); //Post Student Details to DB String post = “INSERT INTO “+tableName+”(ID, responses, Correct_Response, Valid_Invalid, Marks) VALUES (‘”+ansID+”‘, ‘”+answer+”‘, ‘”+correct+”‘, ‘”+valid+”‘, ‘”+marks+”‘);”; stmt.executeUpdate(post); } catch(Exception […]