标签: sqlite

Cursor!= null但是null?

我试图在应用程序同步时更新数据库中每一行的"html"列.我已经使用本教程在这里将应用程序添加到"配置文件"列表中.这是我在SyncAdapter中使用的代码:

private static void performSync(Context context, Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) throws OperationCanceledException {
  MySQLiteHelper openHelperClass;
  SQLiteDatabase sqliteDatabase;
  String str;
  mContentResolver = context.getContentResolver();
  Log.i(TAG, "performSync: " + account.toString());

  Log.v(TAG, "CDS Opened!");
  openHelperClass = new MySQLiteHelper(context);
  sqliteDatabase = openHelperClass.getWritableDatabase();
  Log.v(TAG, "CDS loaded db!");
  Cursor cursor = sqliteDatabase.query("offline", null, null, null, null, null, null);
  Log.v(TAG, "CDS queried!");
  if(cursor != null) {
      Log.v(TAG, "Cursor not null!");
      Log.v(TAG,cursor.toString());
      if(cursor.moveToFirst()) {
          Log.v(TAG, "first pos");
      while(cursor.moveToNext()) {
          Log.v(TAG, "1"); …
Run Code Online (Sandbox Code Playgroud)

java sqlite android

0
推荐指数
1
解决办法
312
查看次数

SQLite子查询

我有一个子查询的查询,返回多行.

我有一个包含列表的表和一个包含用户的表.我在这两个表之间创建了一个多对多表,称为list_user.

LIST
id INTEGER
list_name TEXT
list_description TEXT

USER
id INTEGER
user_name TEXT

LIST_USER
id INTEGER
list_id INTEGER
user_id INTEGER
Run Code Online (Sandbox Code Playgroud)

我的子查询查询

SELECT * FROM user WHERE id = (SELECT user_id FROM list_user WHERE list_id = 0);
Run Code Online (Sandbox Code Playgroud)

子查询工作(我在代码中使用它,所以0实际上是一个变量),它返回多行.但是上层查询只返回一行,这很合乎逻辑; 我检查id是否等于某个东西,它只检查子查询的第一行.

如何更改我的语句,以便在上层查询中获得多行?

sql sqlite android subquery

0
推荐指数
1
解决办法
4642
查看次数

我尝试获取SQLite数据时的StringIndexOutOfBoundsException

当我尝试从我的Activity中的数据库SQLite获取数据时

DataBaseAdapterCars mDbHelper = new DataBaseAdapterCars(this);
        mDbHelper.createDatabase();
        mDbHelper.open();

        Car[] carsList= mDbHelper.getDataDBCarsArray(uso, eta,
        category, class);
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

12-10 17:14:47.069: E/AndroidRuntime(17936): FATAL EXCEPTION: main
12-10 17:14:47.069: E/AndroidRuntime(17936): java.lang.StringIndexOutOfBoundsException
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.app.ContextImpl.validateFilePath(ContextImpl.java:1649)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:555)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at com.my.app.db.DataBaseHelper.createDataBase(DataBaseHelper.java:36)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at com.my.app.db.DataBaseAdapterCars.createDatabase(DataBaseAdapterCars.java:42)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at com.my.app.Cars.initializeData(Cars.java:111)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at com.my.app.Cars$MyAsync$1.run(Cars.java:156)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.os.Handler.handleCallback(Handler.java:587)
12-10 17:14:47.069: E/AndroidRuntime(17936):    at android.os.Handler.dispatchMessage(Handler.java:92) …
Run Code Online (Sandbox Code Playgroud)

sqlite android indexoutofboundsexception android-sqlite

0
推荐指数
1
解决办法
1071
查看次数

在SQLite中注释

我有以下型号:

class Model(...):
  date = DateField()
  user = ForeignKey()
  data = ForeignKey()
  time = IntegerField()
Run Code Online (Sandbox Code Playgroud)

我想为每个用户提供单个数据的时间总和字段,所以我这样做:

Model.objects.filter(date=..., data=...).values('user_id').annotate(time=Sum('time'))
Run Code Online (Sandbox Code Playgroud)

但我收到的结果如下:

[{'user_id':1,'时间':20},{'user_id':1,'时间':10},{'user_id':2,'时间':20}]

所以分组不起作用.我检查了django生成的查询,我不知道为什么django也使用日期和数据进行分组,而不仅仅是用户.我做错了什么或者这只是SQLite问题?

sqlite django django-models

0
推荐指数
1
解决办法
329
查看次数

第一次使用SQLite3用户python 3,打印时出现语法错误

我正在开发一个能够通过将问题导出到数据库来进行测验的程序.我在互联网上看了一下,它说在python中导入或导出到数据库的最简单方法之一是使用SQLite3插件,所以我正在尝试它.这是我第一次我在python中使用了SQLite3插件,并且我在self.connection.commit()中遇到语法错误:

def AddQuestion(self, Question, Answer1, Answer2, Answer3, Answer4):
    self.cursor.execute("""INSERT INTO questions
                            VALUES (?, ?, ?, ?, ?, ?)""", (None, Question, Answer1, Answer2, Answer3, Answer4, CorrectAnswer)
    self.connection.commit()
Run Code Online (Sandbox Code Playgroud)

如果我通过在它之前添加#将其转换为注释,它会告诉我此处的打印是语法错误:

print ("Would you like to make a test? Or would you like to take a test?")
Run Code Online (Sandbox Code Playgroud)

也许是我的缩进,或者我做错了什么?

import squlite3
class QuestionStorage(object):
    def _init_(self, path):
        self.connection = sqlite3.connect(path)
        self.cursor = self.connection.cursor ()

def Close(self):
    self.cursor.close()
    self.connection.close()

def CreateDb(self):
    query = """CREATE TABLE questions
             (id INTEGER PRIMARY KEY, Question TEXT, Answer1 TEXT, Answer2 TEXT, Answer3 …
Run Code Online (Sandbox Code Playgroud)

sqlite syntax python-3.x

0
推荐指数
1
解决办法
1207
查看次数

libsqlite和dispatch_async

如果libsqlite不是线程安全的,则类似这样的代码

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

__block NSArray *__albumsCollection = albumCollections;

dispatch_apply(count, queue, ^(size_t i) 
{ 
   MPMediaItem *albumObj = [[__albumsCollection objectAtIndex:i] representativeItem];

   ///// making some sqlite queries    
});
Run Code Online (Sandbox Code Playgroud)

会引发一个BAD_EXEC。

那么如何使此代码线程安全?

我的解决方案是使用主队列

dispatch_apply(count, dispatch_get_main_queue(), ^(size_t i) 
{
   /// my sqllite queries
});
Run Code Online (Sandbox Code Playgroud)

但我对此不满意。如何使它更好?

sqlite objective-c thread-safety grand-central-dispatch

0
推荐指数
1
解决办法
2076
查看次数

在android中的SQLite中获取行的id

在我的应用程序中,我想获取特定行的id.我使用以下代码:

public String getid(String  heading) throws SQLException
    {
        System.out.println("ddbpos="+heading);
        long recc=0;
        String rec=null;
        Cursor mCursor = db.rawQuery(
                 "SELECT id  FROM  savedstoriestable WHERE heading="+heading , null);
    if (mCursor != null) 
    {
    mCursor.moveToFirst();
    recc=mCursor.getLong(0);
    rec=String.valueOf(recc);
    }
    return rec;
    }
Run Code Online (Sandbox Code Playgroud)

我的数据库看起来像这样:

id      heading                                              Description                                    
1       Congress countdown for 2014 polls:                   ghdfsfdghsdjfsdfhds
        Possibility of UPA-III hinges on how other         
Run Code Online (Sandbox Code Playgroud)

但它显示" Force to close"错误:

我的Logcat如下:

12-24 12:02:10.733: E/AndroidRuntime(22030): Uncaught handler: thread main exiting due to uncaught exception
12-24 12:02:10.804: E/AndroidRuntime(22030): android.database.sqlite.SQLiteException: near "countdown": syntax …
Run Code Online (Sandbox Code Playgroud)

sqlite android

0
推荐指数
1
解决办法
8322
查看次数

为什么我得到CursorIndexOutOfBoundsException?

我不认为我Cursor非常了解我几乎可以肯定我的代码可能是错的,所以我要将我的整个代码链接起来

package com.tanukiproductions.battleforchristmas;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class SQLiteTable {

public static final String KEY_ROWID = "_id";
public static final String KEY_LEVEL = "level";
public static final String KEY_HEALTH = "health";
public static final String KEY_NAME = "name";
public static final String KEY_CRIT = "crit";
public static final String KEY_CRIT_RANGE = "crit_range";
public static final String KEY_CRIT_INC = "crit_increment";
public static final String KEY_HIT_RANGE = "hit_range";
public static final …
Run Code Online (Sandbox Code Playgroud)

sql database sqlite android

0
推荐指数
1
解决办法
80
查看次数

如何从列中等于NULL的表中获取数据

我有桌子:

CREATE TABLE Reports (
         _id INTEGER NOT NULL PRIMARY KEY,member_id INTEGER, 
      is_conf BOOLEAN,
         name TEXT, 
      started INTEGER,
finished INTEGER, description TEXT, obj_id INTEGER NOT NULL, FOREIGN KEY (obj_id) REFERENCES Objects (_id));
Run Code Online (Sandbox Code Playgroud) 我想把数据拿到哪里member_id = NULL.
但查询:
String sql = "SELECT _id, name FROM Reports WHERE member_id = NULL";
Cursor cursor = db.rawQuery(sql, null);
Run Code Online (Sandbox Code Playgroud)

不起作用.

sqlite android android-sqlite

0
推荐指数
1
解决办法
482
查看次数

如何使用min()函数在sqlite中指定查询

我有下面的代码定义的表

CREATE TABLE Products
(
P_Id INTEGER PRIMARY KEY,
name TEXT,
price REAL,
sellPrice REAL,
plu INTEGER,
codeBar TEXT,
tax INTEGER,
amount INTEGER,
date TEXT
);
Run Code Online (Sandbox Code Playgroud)

当我尝试执行查询时,我得到一个语法错误(这是一个准备好的语句)

select * 
from Products 
where P_Id = min(select P_Id from Products where codeBar=?);
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?这个查询有什么问题?

我得到的确切错误消息是:

java.sql.SQLException:接近"select":语法错误

谢谢你的帮助.

java sql sqlite select

0
推荐指数
1
解决办法
211
查看次数