我使用下面的代码在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/