我正在尝试学习SQLite,尝试基本的东西,并且(正如预期的那样)它并没有真正起作用.
我试图创建另一个DB(不同的文件),但错误保持不变.
03-05 17:20:18.989: D/myLogs(1323): --- Insert in mytable: ---
03-05 17:20:18.999: E/SQLiteLog(1323): (1) table mytable has no column named date
03-05 17:20:19.199: E/SQLiteDatabase(1323): Error inserting time=asd date=asd glucose=adf
03-05 17:20:19.199: E/SQLiteDatabase(1323): android.database.sqlite.SQLiteException: table mytable has no column named date (code 1): , while compiling: INSERT INTO mytable(time,date,glucose) VALUES (?,?,?)
Run Code Online (Sandbox Code Playgroud)
这里是LogCat输出:http://s15.postimage.org/soak9ifbf/androidlog.png(无法添加图片,必须给你一个链接)
基本上,它说,没有名为"日期"的列
这是代码:
package com.example.prototype2;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import …Run Code Online (Sandbox Code Playgroud) 我想使用Perl DBI将值插入到Sqlite3表中.我能够毫无问题地插入硬编码值.当我尝试使用perl变量时,我得到一个错误"DBD :: SQLite :: db do failed:no such column:"
这有效:
$dbh->do("insert into Gene values (12, 'AAAAAA', 66, 86, 76)");
Run Code Online (Sandbox Code Playgroud)
但是这段代码
$dbh->do("INSERT INTO Gene values (NULL, $sequence, $siteNumber, $begin, $length)");
Run Code Online (Sandbox Code Playgroud)
抛出错误
DBD::SQLite::db do failed: no such column
Run Code Online (Sandbox Code Playgroud) 我正在处理一个项目并启动了一个小项目来获取Serial上的一些数据.数据来自Serial,但没有任何内容添加到数据库中.表已创建,但实际数据不会被推送.那里出了点问题.
这是我的代码:
#!/usr/bin/env python
import serial
import time
import sqlite3
import os
from datetime import datetime
conn = sqlite3.connect("elements78.db") # or use :memory: to put it in RAM
cursor = conn.cursor()
sql_file = os.path.join(os.path.dirname(__file__), 'elements78.db')
needs_creation = not os.path.exists(sql_file)
db_connection = sqlite3.connect(sql_file)
db_connection.row_factory = sqlite3.Row
# create a table
if needs_creation:
print 'Creating initial database...'
cursor = db_connection.cursor()
db_connection.commit()
print 'Database created.'
cursor.executescript("""
DROP TABLE IF EXISTS elements;
CREATE TABLE elements (id INTEGER PRIMARY KEY AUTOINCREMENT, Name, date CURDATE ) …Run Code Online (Sandbox Code Playgroud) 我有一个sqlite数据库文件.s3db,它已经填充了所有表和数据.我正在尝试连接到数据库使用sqliteConnection.但它似乎没有工作..我已经添加了sqlite.dll的引用,c#是否需要一些其他引用来建立连接?如果我创建一个新的sqlite数据库,它可能是因为xyz.sqlite它可能无法识别数据库扩展.
这就是我建立连接的方式:
// Creates a connection with our database file.
public void connectToDatabase()
{
//this.dbConnection = new SQLiteConnection(@"data source=Fut_Autobuyer_2012.s3db;version=3;");
string dbConnectionString = @"Data Source=Fut_Autobuyer_2012.s3db";
this.dbConnection = new SQLiteConnection(dbConnectionString);
}
Run Code Online (Sandbox Code Playgroud)
这是我建立连接时得到的结果:
Database connection not valid for getting number of changes.
Database connection not valid for getting last insert rowid.
Database connection not valid for getting maximum memory used.
Database connection not valid for getting memory used.
Run Code Online (Sandbox Code Playgroud) 我的Db看起来像这样:
id | Column1 | Column2
Run Code Online (Sandbox Code Playgroud)
必须知道的事实:id不是主要的唯一ID(但可能是).id最高可达2百万+.列值用TINYINT填充
var query : String = "SELECT Column1 FROM Table1 WHERE Column1 <> 0";
dbcmd = dbcon.CreateCommand();
dbcmd.CommandText = query;
reader = dbcmd.ExecuteReader();
var result : int = 0;
while(reader.Read()) {
result++;
}
return result;
Run Code Online (Sandbox Code Playgroud)
但是对于一个基本的搜索它最多需要5秒钟,是否有更快的速度?
编辑:像往常一样,感谢贡献者和快速!
我想知道这种方法是否正确验证_username的值是否已存在于"username"列中
public boolean verification(String _username) throws SQLException{
Cursor c = dataBase.rawQuery("SELECT * FROM "+TABLE_NAME+" WHERE "+KEY_USERNAME+"="+_username, null);
if (c!=null)
return true; // return true if the value of _username already exists
return false; // Return false if _username doesn't match with any value of the columns "Username"
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做同样的事情,我真的不确定这一点,它似乎对我来说.谢谢.
我正在写一个Android应用程序.我需要创建一个SQLite数据库并在创建它时填充它.所以我试图在它的onCreate()函数中填充它.但是,要在数据库中插入数据,需要使用db.getWritableDatabase().但是在数据库的onCreate()函数中无法做到这一点,因为这意味着在创建数据库时调用数据库(它会引发错误).那么如何在数据库的onCreate()函数中使用getWritableDatabase()?
我正在使用SQLite存储一些数据,我知道日期对象不能存储在SQLite数据库中,所以我使用的是字符串.
我的问题是我想检查表的最早日期.因此,如果有2张卡片是01/04/2013和04/05/2013,我想知道01/04/2013是更早的日期并返回该行.
到目前为止,我已经提出了两个解决方案:
对DB的多个查询
我已经能够实现一个成功的解决方案,它将遍历数据库并将日期对象减少1,然后将其用作匹配日期的字符串.问题是在找到最早的日期之前可能需要查询数据库100次.这样做是不好的做法?
通过结果集迭代
另一种可能性是迭代表中所有抽认卡的结果集.但是,这将涉及2个循环,一个循环遍历表中的每一行,这将在一个将日期减少1的循环内.
我觉得这两个都不是很好的解决方案.我想知道是否有人可以帮助我以更有效的方式实现这一目标?
我听说有人说case_sensitive_like启用可以使查询更快.如果是这样,如果我们有以下2个查询选择不区分大小写的数据,您认为如何:
SELECT * FROM MyTable WHERE MyColumn LIKE '%Value%'
假设case_sensitive_like关闭(默认),这将返回相同的结果无论ValueIS value,vAlue,valUE,...
PRAGMA case_sensitive_like = ON;
SELECT * FROM MyTable WHERE LOWER(MyColumn) LIKE LOWER('%Value%');
这也将返回相同的结果无论ValueIS value,vAlue,valUE,...
我希望#2的表现优于#1.
请帮忙.谢谢.
PS:我认为#2的性能可以通过首先使用小写字符串的值声明值的常量来改进,或者可以在传递查询之前处理(例如在C#代码中).
我试图将给定的Header字段与Alarm模型中的其他字段进行比较.正如您在代码中看到的,我在3个不同的步骤中过滤警报.前2个工作完美.但是,最后一个不起作用.它说:
undefined method `where' for #<Array:...
Run Code Online (Sandbox Code Playgroud)
据我所知,.where是一个适用于数组的类方法.为什么不在这里工作?我也尝试了.find_all_by不同的东西......但无济于事.
@header = Header.find(1)
# Extracts those alarms that are ACTIVE and have something in common with the tittles
@alarmsT = Alarm.activated.where("keyword in (?)", [@header.title_es, @header.title_en, @header.title_en])
# Extracts alarms when Header has at least the same categories as an alarm
@alarmsT = @alarmsT.select do |alarm|
@header.category_ids.all?{|c| alarm.category_ids.include? c }
end
// this is the one that does NOT work
# Extract alarms which share the …Run Code Online (Sandbox Code Playgroud) sqlite ×10
android ×3
java ×3
database ×2
performance ×2
sql ×2
c# ×1
cursor ×1
loops ×1
mysql ×1
perl ×1
postgresql ×1
python ×1
resultset ×1
select ×1
serial-port ×1
unityscript ×1