我有一个查询,该查询的日期字段采用数字格式(yyyymmdd)。我通过使用以下公式创建计算字段来重新格式化字段:
[DateField] = Date(Left( [DateField] ,4),Mid( [DateField] ,5,2),Right( [DateField] ,2))
Run Code Online (Sandbox Code Playgroud)
我不断收到一条消息,说我的公式包含错误数量的参数!此公式始终在Excel中有效。
请指教
干杯
我需要从加密的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) 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) 以下方法我想同时插入几个记录.
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) 我正在尝试使用这里的示例代码:
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)
我错过了什么?
如果我们有一个包含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!
如何获取实际更新的行数?
我正在尝试使用 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) 我尝试了以下方法,但没有成功:
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 使用 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) 我来找你是因为我无法解决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...
感谢您的帮助 !
java ×4
jdbc ×4
python ×4
ms-access ×3
pyodbc ×3
ucanaccess ×2
autocommit ×1
blob ×1
encryption ×1
executequery ×1
jackcess ×1
ms-access-97 ×1
mysql ×1
oracle ×1
pandas ×1
pickle ×1
primary-key ×1
pymssql ×1
python-2.x ×1
python-3.x ×1
sql ×1
sql-server ×1
sqlalchemy ×1
wildcard ×1