标签: sqlite

如何使用python和sqlite3创建一个新的数据库(名为xx.db)

import sqlite3

conn = sqlite3.connect(r"D:\aaa.db")
Run Code Online (Sandbox Code Playgroud)

有没有办法自动创建db文件,如果它连接到它时它不存在?

谢谢

python sqlite

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

为SQLiteDatabase使用Singleton设计模式

我是Android上的新手,我正在开发一个简单的应用程序来获得一些基本的体验.我的应用程序非常简单,包括广播接收器和一些活动.这两个组件都使用单个数据库,因此从理论上讲,两者都可能同时尝试访问数据库.

目前我只是在每次需要时实例化db对象(它是一个SQLite数据库帮助程序类),并执行所需的操作:查询,插入等.

从我在这里和其他一些文档中读到的,这有一个问题是在同时访问db的情况下获得"db locked"异常,所以更好的方法是拥有这个db对象的单个实例所以所有组件始终使用相同的数据库连接.

以上推理是否正确?那么一个单身人士会成为一个足够好的解决方案吗?我知道一些纯粹主义者可能反对它,但请注意,这是一个相当简单的应用程序,所以我可以负担得起在其他情况下我不会做的事情.

否则,更好的选择是什么?我已经阅读过有关使用内容提供商的内容,但这对此来说太过分了,除此之外我对与其他活动共享数据不感兴趣.我确实读过这篇文章,发现它很有帮助.

java sqlite singleton android android-loadermanager

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

如何在SQLite数据库中存储图像

在我的应用程序中,我从库中上传图像,我想将此图像存储在SQLite数据库中.如何在数据库中存储位图?我正在将位图转换为字符串并将其保存在数据库中.从数据库中检索它时,我无法将该字符串分配给ImageView,因为它是一个字符串.

Imageupload12 .java:

 public class Imageupload12 extends Activity {
  Button buttonLoadImage;
  ImageView targetImage;
  int i = 0;
  Database database = new Database(this);
  String i1;
  String img;
  @Override
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main5);
   buttonLoadImage = (Button) findViewById(R.id.loadimage);
   targetImage = (ImageView) findViewById(R.id.targetimage);


   Bundle b = getIntent().getExtras();
   if (b != null) {
    img = b.getString("image");
    targetImage2.setImageURI("image");
    //i am getting error as i cant assign string to imageview.

   }

   buttonLoadImage.setOnClickListener(new Button.OnClickListener() {

    public void onClick(View arg0) {
     // TODO Auto-generated method stub …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-emulator

71
推荐指数
4
解决办法
25万
查看次数

在Entity Framework Core中自动创建数据库

我的应用程序被移植到.NET核心将使用新的EF核心与SQLite.我想在首次运行应用程序时自动创建数据库和表结构.根据EF核心文档,这是使用手动命令完成的

dotnet ef migrations add MyFirstMigration

dotnet ef database update
Run Code Online (Sandbox Code Playgroud)

但是,我不希望最终用户输入这些命令,并且希望让应用程序创建并设置数据库以供首次使用.对于EF 6,有类似的功能

Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
Run Code Online (Sandbox Code Playgroud)

但在EF Core中,这些似乎并不存在.我找不到任何关于EF核心等效的示例或文档,并且在EF核心文档的缺失功能列表中没有提到.我已经设置了模型类,所以我可以编写一些代码来基于模型初始化数据库,但如果框架自动执行此操作,则会更容易.我不想自动构建模型或迁移,只需在新数据库上创建表结构.

我在这里遗漏了什么或者在EF核心中缺少自动创建表功能吗?

c# sqlite entity-framework-core .net-core

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

SQLite Android数据库游标窗口分配2048 kb失败

我有一个例程,每秒多次对SQLite数据库运行不同的查询.过了一会儿,我会得到错误

"android.database.CursorWindowAllocationException: - Cursor window allocation of 2048 kb failed. # Open Cursors = " 出现在LogCat中.

我有应用程序日志内存使用情况,实际上当使用率达到一定限度时,我收到此错误,暗示它用完了.我的直觉告诉我,每次运行查询时数据库引擎都在创建一个新缓冲区(CursorWindow),即使我将.close()标记为游标,垃圾收集器也SQLiteDatabase.releaseMemory()不足以释放内存.我认为解决方案可能在于"强制"数据库始终写入相同的缓冲区,而不是创建新的缓冲区,但我一直无法找到这样做的方法.我已经尝试实例化我自己的CursorWindow,并尝试将其设置为和SQLiteCursor无济于事.

有任何想法吗?

编辑:来自@GrahamBorland的示例代码请求:

public static CursorWindow cursorWindow = new CursorWindow("cursorWindow"); 
public static SQLiteCursor sqlCursor;
public static void getItemsVisibleArea(GeoPoint mapCenter, int latSpan, int lonSpan) {
query = "SELECT * FROM Items"; //would be more complex in real code
sqlCursor = (SQLiteCursor)db.rawQuery(query, null);
sqlCursor.setWindow(cursorWindow);
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够.setWindow()在提供新查询之前,CursorWindow每次获取新数据时都将数据放入相同的数据中.

memory sqlite android memory-leaks cursor

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

使用Django将数千条记录插入SQLite表的有效方法是什么?

我必须使用Django的ORM将8000多条记录插入到SQLite数据库中.此操作需要每分钟大约运行一次cronjob.
目前我正在使用for循环迭代所有项目,然后逐个插入它们.
例:

for item in items:
    entry = Entry(a1=item.a1, a2=item.a2)
    entry.save()
Run Code Online (Sandbox Code Playgroud)

这样做的有效方法是什么?

编辑:两种插入方法之间的一点比较.

没有commit_manually装饰器(11245条记录):

nox@noxdevel marinetraffic]$ time python manage.py insrec             

real    1m50.288s
user    0m6.710s
sys     0m23.445s
Run Code Online (Sandbox Code Playgroud)

使用commit_manually decorator(11245条记录):

[nox@noxdevel marinetraffic]$ time python manage.py insrec                

real    0m18.464s
user    0m5.433s
sys     0m10.163s
Run Code Online (Sandbox Code Playgroud)

注意:除了插入数据库之外,测试脚本还执行一些其他操作(下载ZIP文件,从ZIP存档中提取XML文件,解析XML文件),因此执行所需的时间不一定代表插入所需的时间记录.

python sql sqlite django insert

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

SQLite中有效的表名是什么?

SQLite中表名的字符组合有效是什么?字母数字(AZ,az和0-9)的所有组合是否构成有效名称?

Ex. CREATE TABLE 123abc(...);
Run Code Online (Sandbox Code Playgroud)

那些字母数字与破折号" - "和句号"."的组合怎么样也有效?

Ex. CREATE TABLE 123abc.txt(...);
Ex. CREATE TABLE 123abc-ABC.txt(...);
Run Code Online (Sandbox Code Playgroud)

谢谢.

sql sqlite

67
推荐指数
4
解决办法
4万
查看次数

sqlite将数据从一个表复制到另一个表

SQLITE

我有两个表"Source"和"Destination"具有相同的字段.ID和COUNTRY虽然它们都有其他不常见的字段.

我需要将Source.Country值复制到Destination.Country,其中连接是ID

对于我的生活,我不能让Sqlite这样做.

在SQL Server等中,这是一个非常简单的任务.

想法?

sql sqlite

67
推荐指数
4
解决办法
9万
查看次数

SQLite - SELECT TOP语法错误

我试图使用这个语句,SELECT TOP 1 * FROM tasks WHERE dueDate < ?1 ORDER BY dueDate DESC但SQLite说near "1": syntax error.怎么了?

sql sqlite

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

SQLite:无法绑定索引1处的参数,因为索引超出范围.该语句有0个参数

我收到以下错误,我不知道它为什么会发生.我想知道是否还有其他人可以对这个问题有所了解.

12-25 22:52:50.252: E/AndroidRuntime(813): Caused by: java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range.  The statement has 0 parameters.
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteProgram.bind(SQLiteProgram.java:212)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:166)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteProgram.bindAllArgsAsStrings(SQLiteProgram.java:200)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)
12-25 22:52:50.252: E/AndroidRuntime(813):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200)
Run Code Online (Sandbox Code Playgroud)

代码在这里:

public Player getPlayer(String name) {
    SQLiteDatabase db = this.getReadableDatabase();

    String[] projection = {
            PlayerEntry.COLUMN_NAME_PLAYER_NAME, …
Run Code Online (Sandbox Code Playgroud)

sqlite android

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