java - 如何在Java中通过executeUpdate命令使用Access的Replace()函数?

标签 java sql ms-access

我使用下面的代码在executeUpdate方法中用另一个字符串替换一个字符串。代码是:

                  try
                  {
                   Connection cn=null;Statement st=null;
                  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                  String constring="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=D:sandeep\\copy of abcdef.mdb;";
                  cn=DriverManager.getConnection(constring, "", ""); 
                  st=cn.createStatement();
                  String sql="UPDATE temp SET mobile = Replace(mobile, '-', '')";
                  st.executeUpdate(sql.toString());
                  }
                 catch(Exception ex){System.out.println(ex);
                  }

异常(exception)情况是:

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'Replace' in expression.

最佳答案

Driver={Microsoft Access Driver (*.mdb)}; 使用较旧的“Jet”数据库驱动程序,当使用该驱动程序时,Replace() 函数为不适用于从 Access 应用程序本身外部执行的查询。换句话说,如果从 Access 中执行该查询,该查询将起作用,但如果从 Java 应用程序等外部程序执行,该查询将不起作用。

如果您确实需要使用 Replace() 函数,您可以尝试安装较新的 32 位版本 Access Database Engine (又名“ACE”)。新版本的驱动程序允许在旧驱动程序无法使用的地方使用 Replace() (和其他函数)。

我刚刚使用较新的“ACE”驱动程序对此进行了测试,以下代码适用于我。

请注意,驱动程序名称略有不同:{Microsoft Access Driver (*.mdb, *.accdb)}

import java.sql.*;

public class JDBCQuery {

    public static void main(String args[]) {
        Connection con = null;
        Statement st = null;
        try {
            String connectionString = null;
            connectionString = 
                    "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};" + 
                    "DBQ=C:\\__tmp\\myDb.mdb;";
            con = DriverManager.getConnection(connectionString);

            st = con.createStatement();
            String sql = "UPDATE temp SET mobile = Replace(mobile, '-', '')";
            st = con.createStatement();
            st.execute(sql);
        } catch( Exception e ) {
            e.printStackTrace();
        } finally {
            try {
                if (ps != null) {
                    ps.close();
                }
                if (con != null) {
                    con.close();
                }
            } catch( Exception e ) {
                e.printStackTrace();
            }
        }
    }
}

关于java - 如何在Java中通过executeUpdate命令使用Access的Replace()函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21332325/

相关文章:

sql - 在 MySql 列中存储字符串列表

sql - 尝试加载 Postgres 示例数据库 dvdrental

java - 在 Netbeans 中制作包含 SQL 命令的 jar 文件

mysql - 使用 MS Access Union Query 合并 3 个表/查询

ms-access - 以编程方式重命名 access 中的列

java - 如何为android本地化显示textview动态值

java - KieScanner 无法从自定义 Maven 存储库获取最新的 Jars - Maven - 3.6.3

mysql - SQL - 每人随机选择一条记录

Java 找不到方法 main

java - 将大文件作为流发送到 process.getOutputStream