标签: database

如何在android中使用ormlite在外键上执行级联删除

我在android中使用ormlite并成功创建表并使用DAO执行不同的操作.

但是如果从主表中删除主键,我就一直在删除外键行.

我有两个名为Parent和child的表.父母有多个孩子,所以我将孩子与外键联系起来.

代码:
父表:

@DatabaseField(id = true)
private Integer id;

@ForeignCollectionField(eager = false)
private ForeignCollection<Child> childCollection;
Run Code Online (Sandbox Code Playgroud)

子表:

@DatabaseField(id = true)
private Integer id;

@DatabaseField(foreign = true, foreignAutoRefresh = true, canBeNull = false,
   index = true, columnDefinition = "INTEGER REFERENCES parent(id) ON DELETE CASCADE")
private Parent parent;
Run Code Online (Sandbox Code Playgroud)

现在如果我删除特定id的父行,那么这不会从子表中删除子项.

public void deleteById(Integer parentId) {
    try {
        Dao<Parent, Integer> parentDao = databaseHelper.getParentDao();
        parentDao .deleteById(parentId);

    } catch (SQLException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

请指导我,我做错了.我曾多次尝试和谷歌,但没有运气.

database orm android ormlite android-sqlite

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

JDBC返回一个空的ResultSet(rs.isBeforeFirst()== true),尽管表不为空

我正在尝试为我的Web服务完成数据库访问方法。服务和数据库访问方法对于数据库中的所有其他表都可以正常工作,但是这一特定方法不能。当我查询数据库时,ResultSet总是返回空(表示isBeforeFirst() == true)。

经过多次尝试,我将查询简化SELECT * FROM VIDEOS为简单的查询,看问题是否是我输入的数据和查询中使用的数据之间的某些区别,但是即使是用于选择表中所有项目的简单查询也没有返回任何结果。

这是我用来从数据库中获取信息的方法:

public static Object[] getVideo(String phonenum, String timeStamp)
{
    Connection c = null;
    Statement stmt = null;
    Object[] result = null;
    try
    {
        Class.forName("org.sqlite.JDBC");
        c = DriverManager.getConnection("jdbc:sqlite:lineappDB.db");
        c.setAutoCommit(false);
        System.out.println("Opened database successfully");
        stmt = c.createStatement();
        String query = String.format("SELECT * FROM VIDEOS");
        ResultSet rs = stmt.executeQuery(query);

        // If no data was found
        if (rs.isBeforeFirst())
        {
            rs.close();
            stmt.close();
            c.close();
            return null;
        } else
        {
            result = new Object[6];
            while …
Run Code Online (Sandbox Code Playgroud)

java sql database sqlite jdbc

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

当多个进程以只读模式访问db时,SQLite C++'数据库被锁定'

我有一个不会改变的sqlite数据库.

使用sqlite3_open_v2 以SQLITE_OPEN_READONLY模式打开数据库连接的多个进程.每个进程都是单线程的

这些连接是使用官方C/C++接口的单一合并C源文件从MSVC项目创建的.

根据SQLite FAQ,运行SELECT的多个进程都可以

打开数据库后的每个进程创建4个准备好的SELECT语句,每个语句具有2个可绑定值.

在执行过程中,语句(一次一个)根据需要重复调​​用它们

  • sqlite3_bind_int
  • sqlite3_bind_int
  • sqlite3_step(返回SQLITE_ROW时)
  • sqlite3_column_int(虽然有一行)
  • sqlite3_reset

准备好的语句被重用,因此在程序结束之前不会对每个语句调用finalize.最后,数据库在执行结束时关闭.

问题是这些操作中的任何一个都可能失败,错误代码= 5:'数据库被锁定'

错误代码5是SQLITE_BUSY ,网站声明

"表示与单独的数据库连接发生冲突,可能是在单独的进程中"

互联网的其余部分似乎同意多个READONLY连接是好的.我已经过了一遍又一遍,看不出有什么不妥(我不能在这里发布,我知道,没有帮助)

所以我转向你们,我可能会错过什么?

编辑1:数据库位于本地驱动器上,文件系统是NTFS,操作系统是Windows 7.

编辑2:在无限循环中包装所有sqlite3调用,检查是否返回了SQLITE_BUSY,然后重新调用该调用可以缓解问题.我不认为这是一个修复,但如果真的是正确的事情那么我会这样做.

c++ sql database sqlite

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

使用Python连接到PostgreSQL

我正在尝试使用Python连接到PostgreSQL并遇到很多问题.我的操作系统是Windows 7,我使用的是postgresql 9.3,以及python 3.3和3.4.

我首先尝试使用psycopg2,使用以下代码

try:
    conn = psycopg2.connect("dbname='ravi' user='potsgres' host='localhost' password='***'")
except:
    print ("I am unable to connect to the database")
Run Code Online (Sandbox Code Playgroud)

接下来,我尝试使用此代码使用pyodbc进行连接

try:
    connection = pyodbc.connect("DRIVER={psqlOBDC};SERVER=localhost:5432;DATABASE=ravi;UID=postgres;PWD=***")
except:
    print("not working")
Run Code Online (Sandbox Code Playgroud)

没有联系.

我已经尝试了几件事.我已经进入环境变量,以确保有postgresql和python的路径.我尝试连接到我已经使用pyodbc创建的SQL服务器数据库,并且能够连接没有任何问题.我已经进入ODBC数据源管理器来测试我已经安装的PostgreSQL ODBC驱动程序,测试表明连接是成功的.我不确定这是否相关,但我可以使用geoserver连接到postgresql数据库而不会出现问题.我不确定它是ODBC,JDBC还是其他类型的连接.另外,我最初尝试使用PHP建立连接,但我对PHP知之甚少,所以我认为我的代码中有问题.

关于问题可能是什么的任何想法?我想到了几个途径,但无法弄清楚是否有办法详细查看阻止连接的错误是什么.此外,我尝试使用命令行连接到数据库,但命令行不允许我输入密码.

我找到了几个可能的解决方案,但我要么完全不明白它们的含义,要么应用于linux环境,我不知道这在Windows术语中是什么意思

在psycopg2中打开postgres连接会导致python崩溃

使用pyodbc连接到PostgreSQL

我刚刚开始学习如何编码,所以如果任何可能的解决方案尽可能简单,我会非常感激,并且我认为我对计算机几乎一无所知.非常感谢您的帮助!

编辑:使用univerio的示例这里是我尝试使用psycopg2时的错误消息我得到以下错误SyntaxError: invalid syntax但我无法看到我搞砸了语法.

如果我尝试使用pyODBC这是我得到的错误 ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

我进入ODBC数据源管理员并将SSL更改为require和allow.没有帮助.此外,驱动程序的名称实际上是PostgreSQL35W.添加35W并未更改错误消息.

python sql database postgresql

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

仅通过矩阵转置内存不足

我有一个单元格,Data它包含三个数组,

 Data = 

[74003x253 double]    [8061x253 double]    [7241x253 double]
Run Code Online (Sandbox Code Playgroud)

我正在使用循环来读取这些数组并执行一些函数,

for ii = 1 : 3
    D = Data {ii} ;
    m = mean (D') ;
    // rest of the code
end
Run Code Online (Sandbox Code Playgroud)

哪个得到警告mean并说:

考虑为MEAN使用不同的DIMENSION输入参数

但是当我改成它时,

for ii = 1 : 3
    D = Data {ii}' ;
    m = mean (D) ;
    // rest of the code
end
Run Code Online (Sandbox Code Playgroud)

的内存不足错误.

比较两个代码,有人可以解释会发生什么吗?

似乎我只用复共轭转置得到了错误(我的数据是真正有价值的).

database matlab database-design signal-processing octave

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

数据库中非唯一索引的用途是什么?

我一直在搜索,但似乎无法在数据库中找到唯一和非唯一索引概念背后的适当解释.

例如,在Rails中,您可以为给定字段创建唯一且非唯一的索引,如http://railsguides.net/advanced-rails-model-generators/中所述.

我不明白的是:如果索引的目的是"设置快捷方式"到表中的值位置以便更快地访问它,那么多个值如何共享相同的索引?

比方说,我将电子邮件存储在一个表中,我想索引它们的值位置.如果到目前为止我做得对,如果我有非唯一索引,那么DB可以将foo @ bar.com索引到位置150并且bar @foo.com也索引到位置150.所以如果我最终说100在位置150处的不同值,如果DB仍然必须搜索150处的所有值以找到我需要的确切记录,这不会首先破坏索引的目的吗?

这有什么意义?

谢谢

database ruby-on-rails unique-index

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

如何有效避免重复的密钥异常

我面临以下问题:

我正在尝试将sql-server中的表与多个外部数据库保持同步.这些外部数据库没有共享的唯一主键,因此本地表具有简单的整数PK.

现在,为了使本地表保持最新,完成以下操作:

  1. 查询外部数据库.
  2. 数据被转换为本地表的有效数据.
  3. 插入用于尝试将数据写入本地表.
  4. 如果insert返回重复的条目异常,则将通过select查询搜索PK,并且数据将通过更新查询写入表.
  5. 使用插入或更新的行的PK修改另一个表.

现在这个工作正常但对我来说似乎非常低效.大多数情况下,数据已经在本地表中,并导致插入上出现重复的键异常.这意味着需要处理许多异常,这很昂贵.此外,由于PK由DB管理,因此必须使用选择查询来查找要更新的行.

我该如何避免这种影响?我不想使用存储过程,因为我喜欢通过代码保持查询可管理并包含在版本控制中.

我看过合并,但我看到有太多人报告它的问题.

我想我需要使用一种upsert形式,但我不知道如何通过数据库管理PK来实现这一点.

tl; dr:我需要的是一个查询,它允许我插入或更新一行(取决于重复键或不重复),它总是返回行的PK.

c# database sql-server exception

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

pqxx返回刚刚插入的行的id

我正在使用c ++ 4.8(可用4.9)和pqxx驱动程序版本.4.0.1.postgresdb是最新稳定的.

我的问题是复杂性和资源平衡:

我需要执行insert to database(并且有可选的pqxx :: result)和id,因为表id是基于nextval(table_seq_id)

是否可以获得插入行的id?有一个解决方法可以向db询问有关currentvalue的顺序,只需使用currentvalue + 1(或+ n)插入查询,但这需要执行"insert and ask"链.

Db应该能够存储超过6K的大型请求/per.sec.所以我想问一下id尽可能不频繁.批量插入不是一种选择.

c++ database postgresql optimization libpqxx

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

添加连接时,Visual Studio不显示服务器名称

我正在使用Visual Studio 2010和SQL Server 2012.当我尝试通过Visual Studio连接到SQL Server时,我没有在添加连接下拉菜单中获取我的服务器名称.

c# database sql-server visual-studio-2010

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

Python:打开压缩的SQLite数据库

在Python中,是否有某种或多或少的方法可以打开压缩的SQLite数据库而不必在某个地方写入临时文件?

就像是:

import bz2
import sqlite3

dbfile = bz2.BZ2File("/path/to/file.bz2", "wb")
dbconn = sqlite3.connect(dbfile)

cursor = dbconn.cursor()
...
Run Code Online (Sandbox Code Playgroud)

这当然引起了:

ValueError: database parameter must be string or APSW Connection object
Run Code Online (Sandbox Code Playgroud)

谢谢!

python database compression sqlite

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