我在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)
请指导我,我做错了.我曾多次尝试和谷歌,但没有运气.
我正在尝试为我的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) 我有一个不会改变的sqlite数据库.
使用sqlite3_open_v2 以SQLITE_OPEN_READONLY模式打开数据库连接的多个进程.每个进程都是单线程的
这些连接是使用官方C/C++接口的单一合并C源文件从MSVC项目创建的.
根据SQLite FAQ,运行SELECT的多个进程都可以
打开数据库后的每个进程创建4个准备好的SELECT语句,每个语句具有2个可绑定值.
在执行过程中,语句(一次一个)根据需要重复调用它们
准备好的语句被重用,因此在程序结束之前不会对每个语句调用finalize.最后,数据库在执行结束时关闭.
问题是这些操作中的任何一个都可能失败,错误代码= 5:'数据库被锁定'
错误代码5是SQLITE_BUSY ,网站声明
"表示与单独的数据库连接发生冲突,可能是在单独的进程中"
互联网的其余部分似乎同意多个READONLY连接是好的.我已经过了一遍又一遍,看不出有什么不妥(我不能在这里发布,我知道,没有帮助)
所以我转向你们,我可能会错过什么?
编辑1:数据库位于本地驱动器上,文件系统是NTFS,操作系统是Windows 7.
编辑2:在无限循环中包装所有sqlite3调用,检查是否返回了SQLITE_BUSY,然后重新调用该调用可以缓解问题.我不认为这是一个修复,但如果真的是正确的事情那么我会这样做.
我正在尝试使用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崩溃
我刚刚开始学习如何编码,所以如果任何可能的解决方案尽可能简单,我会非常感激,并且我认为我对计算机几乎一无所知.非常感谢您的帮助!
编辑:使用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并未更改错误消息.
我有一个单元格,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)
我的内存不足错误.
比较两个代码,有人可以解释会发生什么吗?
似乎我只用复共轭转置得到了错误(我的数据是真正有价值的).
我一直在搜索,但似乎无法在数据库中找到唯一和非唯一索引概念背后的适当解释.
例如,在Rails中,您可以为给定字段创建唯一且非唯一的索引,如http://railsguides.net/advanced-rails-model-generators/中所述.
我不明白的是:如果索引的目的是"设置快捷方式"到表中的值位置以便更快地访问它,那么多个值如何共享相同的索引?
比方说,我将电子邮件存储在一个表中,我想索引它们的值位置.如果到目前为止我做得对,如果我有非唯一索引,那么DB可以将foo @ bar.com索引到位置150并且bar @foo.com也索引到位置150.所以如果我最终说100在位置150处的不同值,如果DB仍然必须搜索150处的所有值以找到我需要的确切记录,这不会首先破坏索引的目的吗?
这有什么意义?
谢谢
我面临以下问题:
我正在尝试将sql-server中的表与多个外部数据库保持同步.这些外部数据库没有共享的唯一主键,因此本地表具有简单的整数PK.
现在,为了使本地表保持最新,完成以下操作:
现在这个工作正常但对我来说似乎非常低效.大多数情况下,数据已经在本地表中,并导致插入上出现重复的键异常.这意味着需要处理许多异常,这很昂贵.此外,由于PK由DB管理,因此必须使用选择查询来查找要更新的行.
我该如何避免这种影响?我不想使用存储过程,因为我喜欢通过代码保持查询可管理并包含在版本控制中.
我看过合并,但我看到有太多人报告它的问题.
我想我需要使用一种upsert形式,但我不知道如何通过数据库管理PK来实现这一点.
tl; dr:我需要的是一个查询,它允许我插入或更新一行(取决于重复键或不重复),它总是返回行的PK.
我正在使用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尽可能不频繁.批量插入不是一种选择.
我正在使用Visual Studio 2010和SQL Server 2012.当我尝试通过Visual Studio连接到SQL Server时,我没有在添加连接下拉菜单中获取我的服务器名称.
在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)
谢谢!
database ×10
sql ×3
sqlite ×3
c# ×2
c++ ×2
postgresql ×2
python ×2
sql-server ×2
android ×1
compression ×1
exception ×1
java ×1
jdbc ×1
libpqxx ×1
matlab ×1
octave ×1
optimization ×1
orm ×1
ormlite ×1
unique-index ×1