我通过Zentus在Java应用程序中使用SQLite.在这种情况下,我需要在我的数据库中保存和查询Java 值.来自其他RDBMS我创建了如下表来存储长值:long
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Run Code Online (Sandbox Code Playgroud)
此解决方案产生例外行为,但在阅读关于数据类型的SQLite文档后,我理解我的LONG类型与使用TEXT=> 相同的效果longValue存储为文本.
然后,我决定将其更改为INTEGER(长度是可变的,并且可以存储多达64位的整数,这是Java长度的长度),以便拥有更清晰的代码,可能是为了节省一些磁盘空间并提高性能,因为我的longValues是插入和查询为long.
在比较创建的数据库的性能和大小后,我无法看到以下任何区别:
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue LONG)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE myTable (id INTEGER PRIMARY_KEY, longValue INTEGER)
Run Code Online (Sandbox Code Playgroud)
有关该主题的任何评论,经验或感受?
我在表上有多个(复合)主键,其中一个将自动递增.然而,有趣的是,SQLite允许AUTOINCREMENT在强制性PRIMARY KEY关键字之后使用关键字.
我的查询是:
CREATE TABLE ticket (
id INTEGER PRIMARY KEY AUTOINCREMENT,
seat TEXT, payment INTEGER,
PRIMARY KEY (id, seat))
Run Code Online (Sandbox Code Playgroud)
但是错误是table "ticket" has more than one primary key.
实际上我可以避免使用此表的其他主键.但是我正在编写一个ORM框架(地狱是的,我很疯狂)并且不想改变PRIMARY KEY表的约束生成结构(因为它在MySQL afaik中是允许的).
对此有何解决方案?
我已经安装了python并且它包含了sqlite ...但是在哪里创建的sqlite db文件路径manage.py syncdb?我在Mac上.
我正在使用Eclipse进行Android编程.是否有用于在模拟器中查看SQLite数据库的工具?
我将开发一个包含大量数据的android应用程序(带有一些行的json文件和带有大量行的图形数据的CSV),此数据每5分钟更改一次并替换所有以前的数据(或大多数).
设计这个的最佳方法是什么?我有2个选择:
将所有数据保存在sqlite数据库中,并通过IntentService进行同步.
将数据保存在json和csv文件中,每5分钟更换一次.
哪种方法会有最佳表现?这考虑了解析文件,排序数据,下载时间和数据一致性的时间.
还有其他想法吗?
PD:我也需要一个缓存系统,如果我没有互联网,我需要以前存储的数据
我试图在Python 2.7.3中创建一个函数来打开SQLite数据库.
这是我目前的代码:
import sqlite3 as lite
import sys
db = r'someDb.sqlite'
def opendb(db):
try:
conn = lite.connect(db)
except sqlite3.Error:
print "Error open db.\n"
return False
cur = conn.cursor()
return [conn, cur]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上面的代码,并且我观察到该sqlite3库打开了声明的数据库(如果存在),或者如果此数据库不存在则创建新数据库.
有没有办法检查数据库是否存在sqlite3方法,还是我必须使用文件操作os.path.isfile(path)?
我目前正在开发一个C#表单应用程序,需要访问我的计算机上的特定cookie,我可以做得非常好.这是问题所在:
Google将SQL存储在SQLite中,我已下载Sqlite数据库浏览器以帮助我查看这些值.令我惊讶的是,大约一半的cookie值显示为空(包括我需要的那个),即使它们显然不是.
db文件位于:
C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default\Cookies
Run Code Online (Sandbox Code Playgroud)
在Chrome上我有一个名为"编辑此Cookie"的插件,它允许我直接修改我所在网站上的Cookie.这个插件可以读取这些cookie,并且Web浏览器可以在需要时通过HTTP解析不同的请求,因此它们肯定存在 - 仍然,SQLite浏览器和我的自定义代码都得出结论,特定值字段为空.
这是为什么?是什么以某种方式阻止某些应用程序读取该字段?
我的数据类看起来像这样
@Entity(tableName = "items")
data class Item(
@ColumnInfo(name = "name") var name: String = "",
@ColumnInfo(name = "room") var room: String = "",
@ColumnInfo(name = "quantity") var quantity: String = "",
@ColumnInfo(name = "description") var description: String = "",
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id") var id: Long = 0
)
Run Code Online (Sandbox Code Playgroud)
Room使用SQLite和SQLite支持其数据库中的NOT NULL列.我尝试用@NonNull注释列,但它没有效果.
有没有办法让房间数据库中的列不可为空?
我有一个简单的asp.net核心Web应用程序(v2.1),我在Linux上部署到B1(我试过B2)Azure App Service.当我调用时dbContext.SaveChanges(),在添加一个非常简单的实体之后,请求大约需要30秒才会抛出以下错误:
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 5: 'database is locked'.
这是代码._dbContext注入了作用域生存期.
public async Task<IActionResult> SignIn([Bind("Email,Password,RedirectUrl")] SignInModel model) {
if (ModelState.IsValid) {
var user = _dbContext.Users.Include(u => u.Claims).FirstOrDefault(u => u.UserName == model.Email);
...
user.LastLogin = DateTimeOffset.Now;
await _dbContext.SaveChangesAsync();
...
return Redirect(String.IsNullOrWhiteSpace(model.RedirectUrl) ? "/" : model.RedirectUrl);
}
else {
return View(model);
}
}
Run Code Online (Sandbox Code Playgroud)
在30秒内,我通过SSH看到SQLite DB文件旁边存在日志文件.它最终被删除了.
更新:这是日志.您可以看到,在单次更新调用之后,将在30秒后抛出锁定异常.30秒是SQL命令超时.我正在使用远程SSH shell观察文件系统,日志文件在那里持续约30秒.这就像应用服务使用的网络共享和SQLite文件锁定逻辑的组合被破坏或非常慢.
2018-12-20T15:06:27.660624755Z [40m[32minfo[39m[22m[49m: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
2018-12-20T15:06:27.660656156Z Request starting HTTP/1.1 POST http://insecuresite.azurewebsites.net/Account/SignIn application/x-www-form-urlencoded 56
2018-12-20T15:06:27.660797960Z [15:06:27 DBG] InsecureSite.Middleware.MyCookieAuthHandler:Constructor called.
2018-12-20T15:06:27.660875561Z [15:06:27 DBG] InsecureSite.Middleware.MyCookieAuthHandler:Constructor called.
2018-12-20T15:06:27.660885462Z …Run Code Online (Sandbox Code Playgroud)