小编Gor*_*son的帖子

在没有ODBC的情况下从Java操作Access数据库

我想从我的Java项目中操作Microsoft Access数据库(.accdb或.mdb文件).我不想使用Microsoft的JDBC-ODBC Bridge和Access ODBC驱动程序,因为:

  • JDBC-ODBC Bridge已从Java SE 8中删除,不受支持(参考:此处),
  • 当文本包含代码点高于U + 00FF(ref:here)的Unicode字符时,JDBC-ODBC Bridge无法与Access ODBC驱动程序一起正常工作,因此这样的设置将无法处理希腊语,俄语,中文等字符,阿拉伯语等,
  • Microsoft的Access ODBC驱动程序仅适用于Windows,和
  • 存在独立的32位和64位版本的Access数据库引擎(和ODBC驱动程序),这可能会对部署造成麻烦.

我看到其他答案提到了名为UCanAccess的 Access数据库的JDBC驱动程序.如何设置我的Java项目以使用此方法?

(回答建议使用Java的Access数据库的更好方法也是最受欢迎的.)

java ms-access ucanaccess

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

最有效的ResultSet转换为JSON?

以下代码ResultSet使用JSONArray和将a转换为JSON字符串JSONObject.

import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONException;

import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

public class ResultSetConverter {
  public static JSONArray convert( ResultSet rs )
    throws SQLException, JSONException
  {
    JSONArray json = new JSONArray();
    ResultSetMetaData rsmd = rs.getMetaData();

    while(rs.next()) {
      int numColumns = rsmd.getColumnCount();
      JSONObject obj = new JSONObject();

      for (int i=1; i<numColumns+1; i++) {
        String column_name = rsmd.getColumnName(i);

        if(rsmd.getColumnType(i)==java.sql.Types.ARRAY){
         obj.put(column_name, rs.getArray(column_name));
        }
        else if(rsmd.getColumnType(i)==java.sql.Types.BIGINT){
         obj.put(column_name, rs.getInt(column_name));
        }
        else if(rsmd.getColumnType(i)==java.sql.Types.BOOLEAN){
         obj.put(column_name, rs.getBoolean(column_name));
        }
        else if(rsmd.getColumnType(i)==java.sql.Types.BLOB){ …
Run Code Online (Sandbox Code Playgroud)

java sql json resultset

106
推荐指数
6
解决办法
14万
查看次数

编译错误:"g ++:错误尝试执行'cc1plus':execvp:没有这样的文件或目录"

当我用... 编译C/C++程序时popen,php我收到此错误:

g++: error trying to exec 'cc1plus': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但如果我在shell中运行PHP代码..它工作正常..

在Arch Linux ..

PHP代码:

<?php
    function rfile($fp) {
    $out="";
       while (!feof($fp)) {
           $out.= fgets($fp, 1024000);
       }
       return $out;
    }
    $p = popen('g++ -Wall -g aplusb.cc -o aplusb 2>&1', 'r');
    $result = rfile($p);
    pclose($p);
    echo $result;
?>
Run Code Online (Sandbox Code Playgroud)

谢谢

php c c++ linux gcc

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

将 pyodbc Connection 对象与 pandas 一起使用时收到警告

我试图理解当我设置 python 代码在 VM 服务器上运行时开始出现的以下错误,该服务器在我的桌面上安装了 3.9.5 而不是 3.8.5。不确定这是否重要,但这可能是部分原因。

错误

C:\ProgramData\Miniconda3\lib\site-packages\pandas\io\sql.py:758: UserWarning: pandas only support SQLAlchemy connectable(engine/connection) or
database string URI or sqlite3 DBAPI2 connection
other DBAPI2 objects are not tested, please consider using SQLAlchemy
  warnings.warn(
Run Code Online (Sandbox Code Playgroud)

这是一个相当简单的 .py 文件,该文件导入 pyodbc 和 sqlalchemy fwiw。产生警告的 sql 调用的相当通用/简单的版本是:

myserver_string = "xxxxxxxxx,nnnn"
db_string = "xxxxxx"

cnxn = "Driver={ODBC Driver 17 for SQL Server};Server=tcp:"+myserver_string+";Database="+db_string +";TrustServerCertificate=no;Connection Timeout=600;Authentication=ActiveDirectoryIntegrated;"

def readAnyTable(tablename, date):
    conn = pyodbc.connect(cnxn)
    
    query_result = pd.read_sql_query(
            ''' 
                 SELECT *
                 FROM [{0}].[dbo].[{1}]
                where Asof >= '{2}'
            '''.format(db_string,tablename,date,), conn) …
Run Code Online (Sandbox Code Playgroud)

sql-server pyodbc python-3.x pandas

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

带有rewriteBatchedStatements = true的MySQL和JDBC

我一直在这里,这里,这里这里阅读使用的优点rewriteBatchedStatements=true

如果我理解正确的话,rewriteBatchedStatements=trueJDBC会将尽可能多的查询打包到一个网络数据包中,从而降低网络开销.我对吗?

然后我注意到MySQL服务器中定义的值max_allowed_packet可能会导致查询出现问题(查询未在服务器上执行).

所以我的第二个问题是,JDBC是否知道分配给它的值max_allowed_packet,因此使数据包小于定义的值,max_allowed_packet或者是开发人员必须考虑的内容?

如果我理解错了,请告诉我.

java mysql sql jdbc

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

使用 AsyncEngine 执行任何 SQL 查询时出现 ObjectNotExecutableError

我正在使用 async_engine。当我尝试执行任何操作时:

async with self.async_engine.connect() as con:
    query = "SELECT id, name FROM item LIMIT 50;"
    result = await con.execute(f"{query}")
Run Code Online (Sandbox Code Playgroud)

我越来越:

Exception has occurred: ObjectNotExecutableError
Not an executable object: 'SELECT id, name FROM item LIMIT 50;'
Run Code Online (Sandbox Code Playgroud)

这个问题之前由用户@stilmaniac提出过,但现在已从SO 中删除

我在谷歌搜索缓存中找到了它,这里是副本

我有同样的问题,所以我重新询问它,但原始版本如下:


我正在尝试从元数据创建表,如下所示:

Base = declarative_base()

properties = Table(
    'properties', Base.metadata,
    # ...
    Column('geolocation', Geography(geometry_type='POINT', srid=4326)),
    # ... 
)

engine = create_async_engine("postgresql+asyncpg://user:password@postgres/")
async with engine.begin() as conn:
    await conn.run_sync(Base.metadata.create_all)
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'CREATE INDEX …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy python-3.x python-asyncio asyncpg

47
推荐指数
2
解决办法
7万
查看次数

read_sql_query() 使用 SQLAlchemy 2.0.0 抛出“'OptionEngine'对象没有属性'execute'”

首先,我是开发界的一个全新的人,我目前正在学习人工智能/数据科学课程,我的工作之一是使用 SQL 数据库使用 Prophet 进行预测,然后使用这些预测进行预测PowerBI 但目前,我被 Python 代码困住了,我最初不是开发人员,所以我不知道问题出在哪里:

import sqlalchemy
from sqlalchemy import create_engine
import pandas as pd
from prophet import Prophet
import pymysql


engine = create_engine("mysql+pymysql://root:Password@localhost:3306/data")
query = "SELECT Cle_Produit, Date_Facturation, SUM(Quantite) AS Total_Quantite FROM ventes GROUP BY         Cle_Produit, Date_Facturation"
df = pd.read_sql_query(query, engine)

df = df.pivot(index='Date_Facturation', columns='Cle_Produit', values='Total_Quantite')
df = df.reset_index()
df.rename(columns={'Date_Facturation': 'ds', 'Total_Quantite': 'y'}, inplace=True)


m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)

forecast[['ds', 'yhat']].to_csv('forecast.csv', index=False)
Run Code Online (Sandbox Code Playgroud)

它返回给我这条消息:

导入失败。交互式情节将不起作用。回溯(最近一次调用最后一次):文件“f:\Backup\Cours\Cours\Explo Data\app3.py”,第 9 行,在 df = pd.read_sql_query(query, engine) …

python sqlalchemy pandas

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

是否可以在Microsoft Access更新查询中以编程方式传递参数?

我有一个查询这是相当大的,在加盟十几张桌子,我想拉回来基于一个id字段记录(:between nStartID and nEndID).

我创建了两个参数并将它们作为标准进行测试,它们运行良好.

问题是,我需要在主查询中运行来自此主查询的插入查询,并且需要它们所在的参数.所以,我需要以编程方式将参数传递给它.

任何人都知道如何做到这一点?

谢谢.

parameters ms-access vba ms-access-2010

34
推荐指数
2
解决办法
10万
查看次数

返回受Java中SQL UPDATE语句影响的行数

我正在使用MySQL数据库并通过Java访问它.

PreparedStatement prep1 = this.connection.prepareStatement("UPDATE user_table 
                                                               SET Level = 'Super' 
                                                             WHERE Username = ?");
prep1.setString(1, username);
Run Code Online (Sandbox Code Playgroud)

上面的更新语句工作正常,但是我想获得受此语句影响的行数.这可能吗?

java mysql sql prepared-statement rowcount

31
推荐指数
3
解决办法
7万
查看次数

如何使用pyodbc从CSV加速批量插入到MS SQL Server

下面是我想要帮助的代码.我不得不运行超过1,300,000行,这意味着插入~300,000行需要40分钟.

我认为批量插入是加速它的路线?或者是因为我通过for data in reader:部分迭代行?

#Opens the prepped csv file
with open (os.path.join(newpath,outfile), 'r') as f:
    #hooks csv reader to file
    reader = csv.reader(f)
    #pulls out the columns (which match the SQL table)
    columns = next(reader)
    #trims any extra spaces
    columns = [x.strip(' ') for x in columns]
    #starts SQL statement
    query = 'bulk insert into SpikeData123({0}) values ({1})'
    #puts column names in SQL query 'query'
    query = query.format(','.join(columns), ','.join('?' * len(columns)))

    print 'Query is: %s' …
Run Code Online (Sandbox Code Playgroud)

python sql-server bulkinsert pyodbc sql-server-2012

26
推荐指数
2
解决办法
5万
查看次数