我们知道什么时候.mode column让我看到像列.headers on这样的表格,我们可以看到表格的标题.但是我想知道是否有任何方法可以进行两种默认设置?
做一些修改sqlite的源代码?? 或者是否有这些设置的配置文件?
我创建了一个数据库.我想做交易.SaveCustomer()包含多个语句,以便Customer, CustomerControl, Profile, Payment在那时将记录插入表中.
当用户调用 SaveCustomer()方法时,该数据将转到这4个表.所以我该如何进行交易?如果一个表插入失败,则需要回滚所有内容.例如,当第3个表插入记录时出现错误,那么还需要回滚前两个表的插入记录.
看我的代码:
public void saveCustomer(){
DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(RetailerOrderKeyActivity.this);
dbAdapter.openDataBase();
ContentValues initialValues = new ContentValues();
initialValues.put("CustomerName",customer.getName());
initialValues.put("Address",customer.getAddress());
initialValues.put("CustomerPID",strPID);
initialValues.put("Date",strDateOnly);
long n = dbAdapter.insertRecordsInDB("Customer", null, initialValues);
}
Run Code Online (Sandbox Code Playgroud)
同样其他声明也在那里.
DBAdpter代码是:
public long insertRecordsInDB(String tableName, String nullColumnHack,ContentValues initialValues) {
long n =-1;
try {
myDataBase.beginTransaction();
n = myDataBase.insert(tableName, nullColumnHack, initialValues);
myDataBase.endTransaction();
myDataBase.setTransactionSuccessful();
} catch (Exception e) {
// how to do the rollback
e.printStackTrace();
}
return n;
}
Run Code Online (Sandbox Code Playgroud)
这是完整的代码:
public class DBAdapter extends …Run Code Online (Sandbox Code Playgroud) 在尝试删除文件之前,我在关闭数据库时遇到问题.代码就是这样
myconnection.Close();
File.Delete(filename);
Run Code Online (Sandbox Code Playgroud)
并且Delete抛出了一个异常,即该文件仍在使用中.几分钟后我在调试器中重新尝试了Delete(),所以这不是时间问题.
我有事务代码,但在Close()调用之前它根本不运行.所以我很确定这不是一个开放的交易.打开和关闭之间的sql命令只是选择.
ProcMon显示我的程序和我的防病毒软件查看数据库文件.它没有显示我的程序在close()之后释放db文件.
Visual Studio 2010,C#,System.Data.SQLite版本1.0.77.0,Win7
我看到一个两岁的bug就像这样,但更新日志说它已修复.
还有什么我可以检查的吗?有没有办法获得任何打开的命令或事务的列表?
新的工作代码:
db.Close();
GC.Collect(); // yes, really release the db
bool worked = false;
int tries = 1;
while ((tries < 4) && (!worked))
{
try
{
Thread.Sleep(tries * 100);
File.Delete(filename);
worked = true;
}
catch (IOException e) // delete only throws this on locking
{
tries++;
}
}
if (!worked)
throw new IOException("Unable to close file" + filename);
Run Code Online (Sandbox Code Playgroud) 我想使用select查询从表中检索数据.我发现,rawQuery(query, selectionArgs)方法SQLiteDatabase类检索数据.但我不知道该怎么query和selectionArgs应该传递给rawQuery方法?
当我尝试在Ruby 2.0.0上使用Rails 4.0.0设置基本安装和启动服务器时,我面临以下错误消息.
/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
Run Code Online (Sandbox Code Playgroud)
如何避免此错误消息并继续进行?
我使用这个命令启动sqlite3版本3.7.7,unix 11.4.2:
sqlite3 auction.db
Run Code Online (Sandbox Code Playgroud)
其中auction.db尚未创建.
sqlite> auction.db < create.sql;
Run Code Online (Sandbox Code Playgroud)
给我这个错误: near "auction": syntax error
我该如何运行脚本?
我有下表的柜台:
CREATE TABLE cache (
key text PRIMARY KEY,
generation int
);
Run Code Online (Sandbox Code Playgroud)
我想增加其中一个计数器,或者如果相应的行还不存在则将其设置为零.有没有办法在标准SQL中没有并发问题的情况下执行此操作?该操作有时是交易的一部分,有时是分开的.
如果可能的话,SQL必须在SQLite,PostgreSQL和MySQL上不加修改地运行.
搜索产生了一些想法,这些想法要么遇到并发问题,要么特定于数据库:
尝试换INSERT行,UPDATE如果出现错误.不幸的是,INSERT中止当前事务的错误.
UPDATE行,如果没有修改行,则为INSERT新行.
MySQL有一个ON DUPLICATE KEY UPDATE条款.
编辑:感谢所有的好评.看起来保罗是对的,并没有单一,便携的方式来做到这一点.这对我来说非常令人惊讶,因为它听起来像是一个非常基本的操作.
我需要在Sqlite数据库中获取表的第一行/第一行.
但我的程序为我正在使用的查询抛出一个SQLException"Sqlite语法错误:'1'附近的语法错误":
SELECT TOP 1 *
FROM SAMPLE_TABLE
Run Code Online (Sandbox Code Playgroud)
我猜这是一种特别针对MS SQL SERVER和MS ACCESS的语法.现在我正在使用.
SELECT *
FROM SAMPLE_TABLE
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
这个问题的最佳解决方案是什么?
我有一组HTML文件和一个SQLite数据库,我想使用file:// scheme从浏览器访问它.是否可以使用JavaScript访问数据库并创建查询(和表)?
我不确定我是否可以使用select into从另一个表导入数据,如下所示:
select * into
bookmark1
from bookmark;
Run Code Online (Sandbox Code Playgroud)
SQlite不支持这种语法吗?还有其他选择吗?
sqlite ×10
sql ×3
android ×2
database ×1
html ×1
javascript ×1
mysql ×1
postgresql ×1
transactions ×1
upsert ×1