首次安装时,我的应用程序必须缓存从网络获取的数据,并将行插入SQLite数据库.我最终得到了大约700个插件,至少需要15秒.目前我的逻辑如下(伪):
ScrollThroughAllObjects(){
if(objectDoesNotExist){
cacheObject();
}
}
cacheObject(Object ob){
ContentValues values = new ContentValues();
values.put(KEY_ID, ob.getId);
// add lots more values
return mDb.insert(DATABASE_TABLE, null, values);
}
Run Code Online (Sandbox Code Playgroud)
有没有更有效,更快捷的方式来处理这个插入?
我编写了一堆辅助函数来包装常用函数,如insert和select.下面包含的只是其中一个包装器...我似乎无法弄清楚它为什么不起作用.
我怀疑它与包装器有关:
from collections import Mapping
import sqlite3
def counter(func):
def wrapper(*args, **kwargs):
wrapper.count = wrapper.count + 1
wrapper.count = 0
return wrapper
@counter
def insert(val, cursor, table="reuters_word_list", logfile="queries.log"):
if val:
if isinstance(val, (basestring, Mapping)):
val='\"'+val+'\"'
query = ("insert into %s values (?);" % 'tablename', val)
if logfile:
to_logfile(query + '\n', logfile)
cursor.execute(query)
if __name__ == '__main__':
connection = sqlite3.connect('andthensome.db')
cursor = connection.cursor()
cursor.execute("create table wordlist (word text);")
insert("foo", cursor)
connection.commit()
cursor.execute("select * from wordlist;")
print cursor.fetchall()
cursor.close()
Run Code Online (Sandbox Code Playgroud) 关于部署到Heroku的问题,我看到很多帖子,但是我无法找到适合我案例的解决方案.任何输入都将非常感激.
我有一个在本地运行良好的博客应用程序.但是,当我部署到Heroku时,我回来了"我很抱歉,但出了点问题".
我拥有的宝石是:
group :development do
gem 'sqlite3', '1.3.5'
end
group :production do
gem 'pg', '0.12.2'
end
Run Code Online (Sandbox Code Playgroud)
我采取的步骤是:
git add.
git commit -am "latest update"
git push
git push heroku
rake db:migrate
heroku run rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我的SQLite3数据库正在迁移,因为我可以通过rails console找到我最新的博客条目(Blog.find(21)).但是,当Heroku控制台返回时,数据似乎没有迁移到Heroku数据库
"ActiveRecord::RecordNotFound: Couldn't find Blog with id=21."
Run Code Online (Sandbox Code Playgroud)
此外,"heroku日志"发现:
Completed 500 Internal Server Error in 50ms
NoMethod Error (undefined method 'blogs' for nil:NilClass):
app/controllers/static_pages_controller.rb:8:in 'home'
Run Code Online (Sandbox Code Playgroud)
这是否意味着我的static_pages_controller中可能存在问题,或者它只是返回错误,因为数据库没有正确迁移?
下面是我的static_pages控制器,它在我的本地服务器上运行正常.
class StaticPagesController < ApplicationController
def home
if signed_in?
@blog = current_editor.blogs.build
end
@editor = Editor.first
@blogs = …Run Code Online (Sandbox Code Playgroud) 我试图使用SQLite数据库在Android本地存储电子邮件.当我第一次调用时context.getWritableDatabase(),数据库尚不存在并且已创建.我在create语句中遇到语法错误...我的代码看起来像这样......
private static final String DATABASE_NAME = "views.db";
private static final int DATABASE_VERSION = 1;
public static final String TABLE_VIEWS = "views";
private static final String KEY_ID = "id";
private static final String KEY_INDEX = "index";
private static final String KEY_FROM = "from";
private static final String KEY_UNREAD = "unread";
private static final String KEY_SUBJECT = "subject";
private static final String KEY_BODY = "body";
// Database creation sql statement
private static final String CREATE_VIEWS_TABLE = "CREATE TABLE " …Run Code Online (Sandbox Code Playgroud) 我从python 2.7.2使用SQLite版本3.3.6.
使用executescript()python脚本执行此查询时:
attach database 'Capacity.db' as WeekAgo;
drop table if exists maximums;
create table maximums (Element TEXT UNIQUE, Score NUMBER , Report TEXT);
insert into maximums (Element, Score, Report) select * from WeekAgo.maximums;
Run Code Online (Sandbox Code Playgroud)
我总是最终删除附加数据库中的WeekAgo.maximums表,并且脚本崩溃,不再存在WeekAgo.maximums.我究竟做错了什么?没有DROP IF EXISTS,一切正常.
以下代码:
-(NSArray *)getContentsWithContextTypes:(NSArray *)contextTypes
contextData:(NSArray *)contextData
{
__block NSString *query = @"SELECT * FROM Texts_original1 WHERE ";
[contextData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSString *attributeName = [self.contextTypeToDBQueryTexts
objectForKey:contextTypes[idx]];
query = [query stringByAppendingFormat:@"%@ = \"%@\"", attributeName, obj];
if(idx != contextData.count - 1)
{
query = [query stringByAppendingString:@" AND "];
}
}];
[self.db open];
FMResultSet *results = [self.db executeQuery:query];
NSMutableArray *array = [NSMutableArray array];
while([results next])
{
Content *content = [[TextualContent alloc] initWithResults:results];
[array addObject:content];
}
[self.db close];
return array; …Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些数据插入SQLite数据库。但是我很想收到错误代码1,表示我的列不存在。有人可以帮我吗,下面是我的代码:
08-17 13:12:46.473: I/Database(13328): sqlite returned: error code = 1, msg = table login has no column named uid
08-17 13:12:46.503: E/Database(13328): Error inserting uid=502e7b90657ab1.86949026 created_at=2012-08-17 12:12:48 email=epaas name=hwheuu
08-17 13:12:46.503: E/Database(13328): android.database.sqlite.SQLiteException: table login has no column named uid: , while compiling: INSERT INTO login(uid, created_at, email, name) VALUES(?, ?, ?, ?);
08-17 13:12:46.503: E/Database(13328): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
08-17 13:12:46.503: E/Database(13328): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:92)
08-17 13:12:46.503: E/Database(13328): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:65)
08-17 13:12:46.503: E/Database(13328): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:83)
08-17 13:12:46.503: E/Database(13328): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:41)
08-17 …Run Code Online (Sandbox Code Playgroud) 尝试在sqlite数据库表中查询所有行时,我收到以下异常:
08-24 20:36:48.134: E/AndroidRuntime(351): java.lang.RuntimeException:
Unable to start activity ComponentInfo{se.p950tes.workouttracker/se.p950tes.workouttracker.SavedActivity}:
android.database.sqlite.SQLiteException: no such column: col_distance: ,
while compiling: SELECT _id, col_date, col_time, col_distance, col_route FROM workout
Run Code Online (Sandbox Code Playgroud)
我还没有更新数据库,这是我第一次在这个设备上安装应用程序,并且它也在模拟器上进行了测试,结果相同.即便如此,我还是尝试了几次版本号,没有任何变化.
这是我的代码.getAll方法抛出异常.
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;
import android.util.Log;
public class DatabaseHandler
{
public static final String DATABASE_NAME = "workout_tracker";
private static final String KEY_ID = "_id";
private static final String KEY_DATE = "col_date";
private static final String KEY_TIME = "col_time";
private static final String KEY_DISTANCE = …Run Code Online (Sandbox Code Playgroud) 我使用"Sqlite for Windows Runtime"和sqlite-net(正如http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-所述 - store-apps.aspx)开发Windows 8 Metro-App,只是.如果我想在程序目录中打开数据库是没有问题的:
var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
using (var db = new SQLite.SQLiteConnection(dbPath)) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是当我想使用这样的extern路径时:
var dbPath = "C:\\Users\\xxxxxx\\db.sqlite";
Run Code Online (Sandbox Code Playgroud)
然后"无法打开数据库文件"出现错误.为什么?在这里我使用C#,通常我使用C++,但对于这个问题,我确信它没关系;)
我已经成功创建了一个数据库程序.基本上我正在处理一个小复杂的数据库,所以需要在SQLITE MANAGER中创建数据库并使用我的android代码导入/链接该数据库.请建议我做这个教程.或任何其他帮助我的代码.谢谢
这是我的数据库代码现在我要导入mYdataBase.sqlite文件.
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contactsManager";
private static final String TABLE_CONTACTS = "contacts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" + …Run Code Online (Sandbox Code Playgroud)