小编Gor*_*son的帖子

在MS Access中将yyyymmdd数字或字符串转换为true日期值

我有一个查询,该查询的日期字段采用数字格式(yyyymmdd)。我通过使用以下公式创建计算字段来重新格式化字段:

[DateField] = Date(Left( [DateField] ,4),Mid( [DateField] ,5,2),Right( [DateField] ,2))
Run Code Online (Sandbox Code Playgroud)

我不断收到一条消息,说我的公式包含错误数量的参数!此公式始终在Excel中有效。

请指教

干杯

ms-access ms-access-2010

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

使用Java/Jackcess从加密的Access .mdb中读取

我需要从加密的Access 97数据库中读取数据并尝试使用Jackcess和UCanAccess.

我正在使用来自bouncycastle.org的jackcess-2.1.2.jar,jackcess-encrypt-2.1.0和bcprov-jdk15on-152.jar

由于UCanAccess在内部使用Jackcess,我在其他所有尝试中都遇到了同样的错误.

import com.healthmarketscience.jackcess.CryptCodecProvider;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import java.io.File;

File fi = new File("test/access/data.mdb"); 
CryptCodecProvider cryptProvider = new CryptCodecProvider();
cryptProvider.setPassword("mypassword");
DatabaseBuilder dbb = new DatabaseBuilder(fi);
dbb.setFileFormat(Database.FileFormat.V1997);
dbb.setAutoSync(false);
dbb.setCodecProvider(cryptProvider);
dbb.setReadOnly(true);
Database dbc = dbb.open();
Run Code Online (Sandbox Code Playgroud)

最后一行调用错误,这里是堆栈跟踪:

Exception in thread "main" java.lang.NoSuchMethodError: org.bouncycastle.crypto.StreamCipher.processBytes([BII[BI)V
at com.healthmarketscience.jackcess.impl.BaseCryptCodecHandler.streamDecrypt(BaseCryptCodecHandler.java:91)
at com.healthmarketscience.jackcess.impl.BaseJetCryptCodecHandler.decodePage(BaseJetCryptCodecHandler.java:62)
at com.healthmarketscience.jackcess.impl.PageChannel.readPage(PageChannel.java:224)
at com.healthmarketscience.jackcess.impl.UsageMap.read(UsageMap.java:130)
at com.healthmarketscience.jackcess.impl.PageChannel.initialize(PageChannel.java:117)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:516)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:389)
at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:248)
at ACCESS.ACCESSTest.main(ACCESSTest.java:84)
Run Code Online (Sandbox Code Playgroud)

java encryption jackcess ms-access-97 ucanaccess

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

发生异常后,关闭连接似乎会提交事务,即使 AutoCommit 为 false

setAutoCommit为 false 并在关闭连接之前抛出异常,但仍然提交事务。这不是很奇怪的行为吗?

public static void insertEmployee(){

        String query1 = "INSERT INTO EMPLOYEE VALUES(80, 'from code')";
        String query2 = "INSERT INTO EMPLOYEE VALUES(81, 'from code')";
        Connection connection = null;
        Statement statement = null;
        try {
            connection =   DriverManager.getConnection(url, username, password);
            connection.setAutoCommit(false);
            statement = connection.createStatement();
            statement.executeUpdate(query1);
            ResultSet resultSet = statement.executeQuery(query2);
            while(resultSet.next()) //this code throws the exception kept like this intentionally
            {
                int empNo = resultSet.getInt("EMPLOYEE_ID");
                String eName = resultSet.getString("EMPLOYEE_NAME");
                System.out.println("eName = " + eName);
            }
        } catch (SQLException e) { …
Run Code Online (Sandbox Code Playgroud)

java jdbc autocommit executequery

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

如何在没有ArrayIndexOutOfBoundsException的情况下通过executeBatch获取生成的密钥?

以下方法我想同时插入几个记录.

public void insert() {
    try {
        this.connection.setAutoCommit(false);
        PreparedStatement ps = this.connection.prepareStatement(
                "INSERT INTO  COMPANY (NAME,Address) Values (?,?)", new String[]{"ID"});
        ps.setString(1, "X01");
        ps.setString(2, "Address1");
        ps.addBatch();

        ps.setString(1, "Y01");
        ps.setString(2, "Address2");
        ps.addBatch();

       //EXCEPTION OCCURS HERE
        int[] numUpdates = ps.executeBatch();

        for (int i = 0; i < numUpdates.length; i++) {
                System.out.println("Execution " + i +
                        "successful: " + numUpdates[i] + " rows inserted");
        }

        ResultSet resultSet =
                (ps).getGeneratedKeys();
        while (resultSet.next()) {
            String deptNoKey = resultSet.getString(1);
            System.out.println("Automatically generated key value = "
                    + deptNoKey); …
Run Code Online (Sandbox Code Playgroud)

java oracle jdbc primary-key

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

尝试在 Windows 上导入 pymssql 时出现“ImportError: DLL load failed”

我正在尝试使用这里的示例代码:

http://www.pymssql.org/en/latest/pymssql_examples.html

我使用pip. 我也在 site-packages 文件夹中看到了

C:\Python27\Lib\site-packages\pymmsql.pyd
Run Code Online (Sandbox Code Playgroud)

但是,当我执行代码时,出现以下错误:

Traceback (most recent call last):
File "C:\Android\android_workspace\pythonProject\test.py", line 2, in <module>
import pymssql
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python python-2.x pymssql python-3.x

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

JDBC返回错误数量的受影响的行

如果我们有一个包含10行的表,并且我们执行此查询两次,则第二次得到错误的受影响行数.

Statement st = open();

st.executeUpdate("UPDATE  `tickets` SET price=1000"); // return 10
st.executeUpdate("UPDATE  `tickets` SET price=1000"); // return 10
Run Code Online (Sandbox Code Playgroud)

显然这是不正确的,因为在第一个查询中,所有行的价格都更新为1000,而在第二个查询中没有任何实际更改,但它再次返回10!

如何获取实际更新的行数?

mysql jdbc

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

在 UCanAccess 中执行PreparedStatement 时出现“功能不支持”错误

我正在尝试使用 ResultSet (UCanAccess 支持)在 GUI 中填充组合框

package Vegan;

import java.sql.Connection;
import java.sql.DriverManager;


public class connectionString {

static Connection connection = null;

public static Connection getConnection()
{
    try
    {
        connection = DriverManager.getConnection("jdbc:ucanaccess://C:/Mo//MyDatabase1.accdb");
        System.out.println("---connection succesful---");
    }

    catch (Exception ex)
    {
        System.out.println("Connection Unsuccesful");
    }

    return connection;
}
Run Code Online (Sandbox Code Playgroud)

 

package Vegan;

import static java.nio.file.Files.list;
import static java.rmi.Naming.list;
import java.sql.*;
import java.util.ArrayList;
import static java.util.Collections.list;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComboBox;


public class DB {


private static ResultSet rs = null;
private static PreparedStatement …
Run Code Online (Sandbox Code Playgroud)

java ms-access jdbc ucanaccess

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

使用 pyodbc 将 pickle 对象插入数据库

我尝试了以下方法,但没有成功:

keypoints_database = pickle.load( open( "5958.p", "rb" ) )

sql = 'INSERT INTO tb_fpdata (Std_SymbolNo , FP_Descriptors) VALUES (5958 , ?)' , pyodbc.Binary(keypoints_database)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误信息

如何将对象保存到数据库中?

python blob pickle pyodbc

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

带通配符的 PyODBC 查询

我正在尝试通过 Python 使用 LIKE 运算符运行 SQL 查询,以查找在任何位置具有“测试”的任何值。问题似乎与 LIKE 运算符之后的格式有关。没有错误消息,查询只是空的。

我试图模仿的 SQL 查询如下,并在 Access 上执行时起作用。

SELECT Areas.ID, Areas.Name
FROM Areas
WHERE Name LIKE '*test*'
Run Code Online (Sandbox Code Playgroud)

以下是连接和测试数据的制作方式。里面没有问题。

import pyodbc

# Connect to database
conn_str = (
    r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
    r'DBQ=C:\Temp\TestDB.accdb;'
    r'Uid=;'
    r'Pwd=;'
    )

# Make cursor
connection = pyodbc.connect(conn_str)
connection.setencoding('utf-8')
cursor = connection.cursor()

# Create test table
cursor.execute("CREATE TABLE Areas (ID integer, Name varchar(255))")
connection.commit()

# Create test data 
cursor.execute("INSERT INTO Areas (ID, Name) VALUES (1,'Example_1');")
cursor.execute("INSERT INTO Areas (ID, Name) …
Run Code Online (Sandbox Code Playgroud)

python sql ms-access wildcard pyodbc

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

使用 SQL Server 提高 pandas 的 to_sql() 性能

我来找你是因为我无法解决pandas.DataFrame.to_sql()方法的问题。

我已经在我的脚本和数据库之间建立了连接,我可以发送查询,但实际上它对我来说太慢了。

我想找到一种方法来提高我的脚本的性能。也许有人会找到解决方案?

这是我的代码:

  engine = sqlalchemy.create_engine(con['sql']['connexion_string'])
  conn = engine.connect()
  metadata = sqlalchemy.Metadata()
  try : 
    if(con['sql']['strategy'] == 'NEW'): 
      query = sqlalchemy.Table(con['sql']['table'],metadata).delete()
      conn.execute(query)
      Sql_to_deploy.to_sql(con['sql']['table'],engine,if_exists='append',index = False,chunksize = 1000,method = 'multi')
    elif(con['sql']['strategy'] == 'APPEND'):
      Sql_to_deploy.to_sql(con['sql']['table'],engine,if_exists='append',index = False,chunksize = 1000,method = 'multi')
    else:
      pass
  except Exception as e:
    print(type(e))
Run Code Online (Sandbox Code Playgroud)

当我退出 chunksize 和方法参数时,它正在工作,而且太慢了,这一刻它太慢了(30000 行几乎需要 3 分钟)。当我输入这些参数时,我得到一个sqlalchemy.exc.ProgrammingError...

感谢您的帮助 !

python sql-server sqlalchemy pyodbc pandas

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