标签: jdbc-odbc

MS Access - 无法打开更多表

在工作中我们必须处理几个MS Access mdb文件,因此我们使用Sun JVM附带的默认JdbcOdbcBridge驱动程序,并且在大多数情况下,它运行良好.

问题是,当我们必须处理一些较大的文件时,我们会遇到几次异常,并显示"无法打开更多表"的消息.我们怎么能避免这种情况?

我们已经关闭了PreparedStatements和RecordSet的所有实例,甚至将它们的变量设置为null,但即便如此,这种异常仍会继续发生.我们应该做什么?我们怎样才能避免这些讨厌的例外?这里有人知道怎么样?

是否有任何其他配置到Windows上的ODBC驱动程序,我们可以更改以避免此问题?

java ms-access jdbc jdbc-odbc

6
推荐指数
1
解决办法
8453
查看次数

JDBC-ODBC Bridge的替换

在Java 8中,将删除JDBC-ODBC-Bridge.典型的错误是:

java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver

你知道可能的替代品吗?我找到了Easysoft.但是这个桥需要一个不在Java VM内运行的附加服务器.它是类型3驱动程序而不是类型1驱动程序.还有其他选择吗?

java odbc jdbc jdbc-odbc

5
推荐指数
1
解决办法
2478
查看次数

Java Access数据库连接

我尝试创建与db(MS Access 2010)连接的项目我在CodeProject上使用本教程.

import java.sql.*;

public class DbAccess
{
    public static void main(String[] args)
    {
        try
        {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String database = 
              "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;";
            Connection conn = DriverManager.getConnection(database, "", "");
            Statement s = conn.createStatement();

            // create a table
            String tableName = "myTable" + String.valueOf((int)(Math.random() * 1000.0));
            String createTable = "CREATE TABLE " + tableName + 
                                 " (id Integer, name Text(32))";
            s.execute(createTable); 

            // enter value into table
            for(int i=0; i<25; i++)
            {
              String addRow = "INSERT INTO " …
Run Code Online (Sandbox Code Playgroud)

java database-connection jdbc-odbc

5
推荐指数
1
解决办法
6万
查看次数

如何通过JDBC-ODBC桥在MS Access中指定空值?

我无法使用MS Access(sun.jdbc.odbc.JdbcOdbcDriver)在PreparedStatement上调用setNull

preparedStatement.setNull(index, sqltype). 
Run Code Online (Sandbox Code Playgroud)

这有解决方法吗?对于LONGBINARY数据类型,我尝试了以下调用,但都没有工作.

setNull(index, java.sql.Types.VARBINARY)
setNull(index, java.sql.Types.BINARY)
Run Code Online (Sandbox Code Playgroud)
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Invalid SQL data type
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
        at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterNull(JdbcOdbc.java:986)
        at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setNull(JdbcOdbcPreparedStatement.java:363)

ms-access odbc blob jdbc jdbc-odbc

4
推荐指数
1
解决办法
1157
查看次数

如何从64位JVM连接到32位Access数据库?

到目前为止,当我不得不连接到32位Access数据库时,我只是使用32位JVM执行应用程序.但是,我现在正在开发一个需要64位JVM的应用程序,但我仍然需要连接到32位Access数据库.当我尝试连接时,我得到以下异常:

java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

String s = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + path;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(s, user, password);
Run Code Online (Sandbox Code Playgroud)

java ms-access 32bit-64bit jdbc-odbc

4
推荐指数
1
解决办法
2万
查看次数

oracle.jdbc.driver.T4CConnection无法强制转换为oracle.jdbc.OracleConnection

WrappedConnectionJDK6 wrapped = (WrappedConnectionJDK6) dbStrategy.getConnection();
            Connection underlyingConn = wrapped.getUnderlyingConnection();
            OracleConnection oracleConn = (OracleConnection)underlyingConn;
Run Code Online (Sandbox Code Playgroud)

最后一行给出错误 -

> ERROR
> [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/web].[resteasy-servlet]]
> (http-/0.0.0.0:8080-1) Servlet.service() for servlet resteasy-servlet
> threw exception: org.jboss.resteasy.spi.UnhandledException:
> java.lang.ClassCastException: oracle.jdbc.driver.T4CConnection cannot
> be cast to oracle.jdbc.OracleConnection
Run Code Online (Sandbox Code Playgroud)

jdbc-odbc jboss6.x

4
推荐指数
1
解决办法
8346
查看次数

Glassfish管理控制台的java.lang.RuntimeException

我试图在我的glassfish上创建具有以下属性的jdbc连接池(如下图所示).它成功连接让我觉得它运作正常.然而,在我重新启动glassfish并尝试ping池之后,我的屏幕上的白色屏幕上出现RuntimeException.不仅在我ping它时,而且当我单击任何选项卡甚至是保存和取消按钮时,它最终都会运行RuntimeException.我已经尝试了所有可能的原因并一遍又一遍地搜索网络,但结果却出现了同样的异常.请帮忙.:(

遇到RuntimeException步骤

连接池属性

RuntimeException的

    2015-04-29T15:19:29.144+0800|SEVERE: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'event132'.
    at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:422)
    at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:394)
    at com.sun.jsftemplating.layout.descriptors.LayoutComponent.beforeCreate(LayoutComponent.java:348)
    at com.sun.jsftemplating.layout.descriptors.LayoutComponent.getChild(LayoutComponent.java:288)
    at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:556)
    at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:551)
    at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:507)
    at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:507)
    at com.sun.jsftemplating.layout.LayoutViewHandler.createView(LayoutViewHandler.java:255)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:205)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:233)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.doChainInvoke(StandardPipeline.java:678)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) …
Run Code Online (Sandbox Code Playgroud)

connection-pooling jdbc jdbc-odbc ojdbc glassfish-4.1

4
推荐指数
1
解决办法
1万
查看次数

尝试通过Java 8中的JDBC-ODBC连接到.accdb文件时出现ClassNotFoundException

我正在Eclipse EE IDE中的Java项目中工作,我必须查询.accdb文件.问题是当我尝试加载驱动程序然后连接到数据库时,它给我一个异常错误.

我的代码:

try{
        String filePath = "//myfilepathtomydb/BLABLA/example.accdb"

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

        String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + filePath;

        Connection database = DriverManager.getConnection(url);

        System.out.println("Connection sucessful");

    } catch (ClassNotFoundException e){     
        System.err.println("Got an exception");
        System.err.println(e.getMessage());
        e.printStackTrace();
    } catch (SQLException sqle) {
        sqle.printStackTrace();
        // TODO: handle exception
    }
Run Code Online (Sandbox Code Playgroud)

例外:

Got an exception
sun.jdbc.odbc.JdbcOdbcDriver
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:259)
    at project.Main.main(Main.java:15)
Run Code Online (Sandbox Code Playgroud)

我在64位Windows中使用32位Eclipse,并且从我读过的这种连接到数据库的方式不支持64位JRE,所以我使用的是选择的32位JRE( jdk1.8.0_05)在我的运行配置中,我在VM中使用了'-d32'参数.

显然 …

java eclipse ms-access-2010 jdbc-odbc java-8

3
推荐指数
1
解决办法
5954
查看次数

如何在 C3P0 中配置连接存在检查?

我正在使用下面的代码来获取Connection. 我已将该c3p0库用于连接池。

package com.dataSource.c3p0;

import java.beans.PropertyVetoException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DataSource {

    private static DataSource     datasource;
    private ComboPooledDataSource cpds;

    private DataSource() throws IOException, SQLException, PropertyVetoException {
        cpds = new ComboPooledDataSource();
        cpds.setDriverClass("com.mysql.jdbc.Driver"); //loads the jdbc driver
        cpds.setJdbcUrl("jdbc:mysql://localhost/test");
        cpds.setUser("root");
        cpds.setPassword("root");

        // the settings below are optional -- c3p0 can work with defaults
        cpds.setMinPoolSize(5);
        cpds.setAcquireIncrement(5);
        cpds.setMaxPoolSize(20);
        cpds.setMaxStatements(180);

    }

    public static DataSource getInstance() throws IOException, SQLException, PropertyVetoException {
        if (datasource == null) {
            datasource …
Run Code Online (Sandbox Code Playgroud)

java jpa connection-pooling jdbc jdbc-odbc

3
推荐指数
1
解决办法
8744
查看次数

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

我有数据库,其中一些名称是用立陶宛字母写的,但是当我尝试使用 java 获取它们时,它会忽略立陶宛字母

\n\n
    DbConnection();\n    zadanie=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);\n    sql="SELECT * FROM Clients;";   \n    dane=zadanie.executeQuery(sql);\n\n    String kas="Imon\xc4\x97";\n    while(dane.next())\n    {\n         String var=dane.getString("Pavadinimas");       \n         if (var!= null) {var =var.trim();} \n         String rus =dane.getString("Rusys");   \n         System.out.println(kas+" "+rus);\n    }\n\n    void DbConnection() throws SQLException\n    {\n        String baza="jdbc:odbc:DatabaseDC"; \n        try\n        {\n            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");\n        }catch(Exception e){System.out.println("Connection error");}\n        connect=DriverManager.getConnection(baza);\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 DB 中,字段类型为 TEXT,大小为 20,不要使用任何其他字母解码或类似的内容。

\n\n

它给了我“ Imon\xc4\x97 Imone ”,尽管在数据库中写的是“Imon\xc4\x97”,它等于rus。

\n

java ms-access jdbc character-encoding jdbc-odbc

2
推荐指数
1
解决办法
3756
查看次数