【问题标题】:Update SQLite DB in WinDev Mobile 21在 WinDev Mobile 21 中更新 SQLite DB
【发布时间】:2016-05-18 10:20:13
【问题描述】:

我正在尝试使用 WinDev Mobile 21 更新现有的 SQLite 数据库。数据库已存储数据,我不想丢失它。

我更新了项目中的分析,向表中添加了一个列,现在应用程序无法打开它,因为 .db 文件的结构与预期不同。

首先我想使用 SQL“ATER TABLE”语句并将新列添加到 .db 文件,但我不知道如何。所以我尝试在打开之前连接到旧数据库,将现有数据复制到临时数据源,删除文件,使用新结构创建一个新文件并将存储的数据复制到其中。

这是我试过的代码,info函数必须返回记录数但返回0。HOpenConnection()和HExecuteSQLQuery()都成功了。

ProductesTemp is Data Source

HDescribeConnection("Temp","","","/sdcard/Android/data/com.dbases/ficheret.db/ficheret.db","ficheret",hNativeAccessSQLite,hOReadWrite)

IF HOpenConnection("Temp") THEN

IF HExecuteSQLQuery(ProductesTemp,"Temp",hQueryDefault,"SELECT * FROM Productes") THEN

    Info("HRecNum: " + HRecNum(ProductesTemp))

ELSE
    Info("HExecuteSQLQuery Error", HErrorInfo(hErrFullDetails))
END

ELSE
    Info("HOpenConnection Error", HErrorInfo(hErrFullDetails))
END

【问题讨论】:

    标签: sqlite windev


    【解决方案1】:

    您应该检查 HOpenConnection() 和 HExecuteSQLQuery() 是否成功。 如果是,它应该返回 true。 否则,您应该通过以下方式获取信息:

    IF NOT(HOpenConnection("TEMP"))
    Info(HErrorInfo(hErrFullDetails))
    END
    

    它说了什么?

    【讨论】:

    • HOpenConnection() 和 HExecuteSQLQuery() 成功,Info() 打印“HRecNum: 0”。我刚刚根据您的建议更新了代码。
    • 你能用 HExecuteSQLQuery(ProductesTemp,"Temp",hQueryWithoutCorrection,"SELECT * FROM Productes") 试试看吗?
    • 没有区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2011-02-17
    相关资源
    最近更新 更多