Netbeans 使用JDBC处理包含Unicode(旁遮普语、印地语)数据和表/列名的Access数据库

Netbeans 使用JDBC处理包含Unicode(旁遮普语、印地语)数据和表/列名的Access数据库,netbeans,jdbc,ms-access-2007,jdbc-odbc,ucanaccess,Netbeans,Jdbc,Ms Access 2007,Jdbc Odbc,Ucanaccess,我的Access数据库有一个包含旁遮普语文本的列的表。我正在尝试使用JDBC从Java NetBeans使用该数据库 我的代码是: private void b1ActionPerformed(java.awt.event.ActionEvent evt) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

我的Access数据库有一个包含旁遮普语文本的列的表。我正在尝试使用JDBC从Java NetBeans使用该数据库

我的代码是:

private void b1ActionPerformed(java.awt.event.ActionEvent evt)
{                                   
  try
  {                     
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + "D:\\PP.accdb";
    Connection conn = DriverManager.getConnection(url);
        System.out.println("Connection Successful");
        Statement stmt = conn.createStatement();
        stmt.execute("select * from Emp");
    ResultSet rs = stmt.getResultSet(); 
    if (rs != null)
        {  
                String s1,s2;
            s1=" ";
            s2=" ";
                while ( rs.next() )
                 {
                JOptionPane.showMessageDialog(null ,rs.getString(2), "Output" ,JOptionPane.INFORMATION_MESSAGE );
                 }
    }
            stmt.close();
            conn.close();
    }
    catch (Exception err) {         System.out.println("ERROR: " + err);         }

}                                  
2015年8月发布的3.x版现在支持表名和列名中的Unicode字符。请注意,至少对于UCanAccess v3.0.0,这些名称需要用方括号括起来,例如:

sql=选择[रंग], 印地语英语; 原始答案

如您在对问题的评论中所述,如果您有一个Access数据库,其表名和列名为印地语或旁遮普语,那么使用Java Access数据库的两种最常见的直接方法将不适用于您:

1 JDBC-ODBC桥

这就是您一直在尝试使用的。不幸的是,当数据库包含Unicode文本(包含代码点U+007F以上的字符)时,JDBC-ODBC桥从未与Access ODBC驱动程序正常工作。对于文本数据和表/列名都是如此。此外,JDBC-ODBC桥已过时:它已从Jav中删除不支持8和。因此,此选项是死路一条

2 UCanAccess

可以成功读取/写入Unicode文本数据,但当前的2.x版本无法处理包含代码点U+007F以上Unicode字符的元数据表/列名。计划在UCanAccess 3.x的下一个主要版本中支持表/列名中的这些字符,但尚未宣布此类版本的时间范围

其他选择:

取决于您需要操作的约束条件,您可以考虑以下一个或多个解决方案。

您可以将数据从Access数据库移动到另一个数据库中,该数据库的JDBC驱动程序支持印地语和旁遮普语的元数据

您可以用C而不是Java构建应用程序。Visual Studio 2013社区版是免费提供的

如果您确实必须坚持使用Java,并且数据必须保存在Access数据库中,则可以安装Microsoft SQL Server Express Edition,在SQL Server中创建指向Access数据库详细信息的链接服务器,然后使用SQL Server的JDBC驱动程序对Access数据库运行查询


这是否可能重复???。当我们将ms access与java一起使用时…并且查询是从[ms access table name Write in Hindi language]中选择*;