标签: sqlite

golang - 将枚举类型保存到SQL数据库"panic:sql:转换Exec参数#1的类型:从Value返回的非值类型int"

在我目前的go项目(~5K LOC)中,我使用sqlite3作为我的底层数据库层,我使用gorm作为我的ORM引擎.其中一个模型是Platform具有PlatformType枚举类型的字段.这是一个代码片段来演示我的问题.

package main

import (
    _ "github.com/jinzhu/gorm/dialects/sqlite"
    "github.com/jinzhu/gorm"
    "database/sql/driver"
    "fmt"
)

/****************************\
    Object Layer
\****************************/

// Platform ID 
type PlatformID string

func (u *PlatformID) Scan(value interface{}) error { *u = PlatformID(value.([]byte)); return nil }
func (u PlatformID) Value() (driver.Value, error)  { return string(u), nil }

// Platform Type enumeration
type PlatformType int
const (
    PLATFORM_TYPE_NOT_A_VALUE PlatformType = iota
    PLATFORM_TYPE_TYPE1
    PLATFORM_TYPE_TYPE2 
)

var types = [...]string {
    "Not a type",
    "Type1",
    "Type2",
}

func (platform_type PlatformType) …
Run Code Online (Sandbox Code Playgroud)

sqlite orm go

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

声明子查询只能返回单个列

我正在浏览Ben Fortas"在10分钟内自学SQL"一书,并且它有灰色框警告:"子查询SELECT语句只能检索单个列.尝试​​返回多个列将返回错误."

事实上,对于RDMS来说,这通常是正确的吗?(请注意,如果这个答案是正确的,则所有数据库都不是这样).

为什么这个世界会是真的?这似乎是一种奇怪的语言限制.查询计算起来很昂贵,并且检索3列的工作在计算上与检索1的工作没有特别的不同(除非您的RDMS存储按列分组而不是按行分组的表).

mysql sql sql-server sqlite postgresql

0
推荐指数
2
解决办法
1395
查看次数

当应用程序关闭android时清除sqlite db

我想在应用程序关闭时删除我的sqlite数据库.我尝试使用全局类并覆盖了onTerminate()方法.

public class AppController extends Application {

private static AppController mInstance;

public Context context(){
    return mInstance.getApplicationContext();

}

@Override
public void onTerminate() {
    context().deleteDatabase(DbHelper.DATABASE_NAME);
    super.onTerminate();
}

}
Run Code Online (Sandbox Code Playgroud)

它不起作用

sqlite android

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

如何删除表中字段等于标题的记录?

我有一个sqlite表,其中包含我想要删除的重复标题.这是我目前的发言.

DELETE FROM table WHERE FIELD = "FIELD"
Run Code Online (Sandbox Code Playgroud)

执行此语句时,将删除整个表.

python sql sqlite sql-delete

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

SQLite PRAGMA table_info(表)不返回列名(在C#中使用Data.SQLite)

我使用以下示例代码,并希望以某种方式获取sqlite3数据库的列名称:

using System;
using System.Data.SQLite;
namespace Program
{
class Program
{
    static void Main(string[] args)
    {
        Program stuff = new Program();
        stuff.DoStuff();
        Console.Read();
    }
    private void DoStuff()
    {
        SQLiteConnection.CreateFile("Database.sqlite");
        SQLiteConnection con = new SQLiteConnection("Data Source=Database.sqlite;Version=3;");
        con.Open();
        string sql = "create table 'member' ('account_id' text not null unique, 'account_name' text not null);";
        SQLiteCommand command = new SQLiteCommand(sql, con);
        command.ExecuteNonQuery();
        sql = "insert into member ('account_id', 'account_name') values ('0', '1');";
        command = new SQLiteCommand(sql, con);
        sql = "PRAGMA table_info('member');";
        command = new …
Run Code Online (Sandbox Code Playgroud)

c# sqlite

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

不断收到错误TypeError:函数最多接受2个参数(给定3个)

我目前正在上大学的课程项目,涉及一个测验,该测验将所有背景数据存储在数据库中。通过添加外键,我试图找到一种方法来合并两个表之间的外键数据。例如,users表存储用户数据及其用户ID。数据表将存储有关测验级别等信息以及该特定用户ID。插入数据时如何从两个表中自动更新该信息?

该方法似乎不起作用,下面是一些代码。

difficulty= (1,)
users_id = (1,)  

#values of variables

def users_level(db,cursor,difficulty,users_id):

   cursor.execute("insert into Data (Level,UsersID) VALUES (?,?)",(difficulty),(users_id))

   db.commit()
Run Code Online (Sandbox Code Playgroud)

然后出现错误:

   cursor.execute("insert into Data (Level,UsersID) VALUES (?,?)",(difficulty),(check_id))
TypeError: function takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

有解决这个问题的方法吗?或者可能是一种更容易/更有效的方法,可以使用外键从其他表中自动增加ID /数据。谢谢。

python sqlite foreign-keys relational-database typeerror

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

创建表上的Android SqLite异常

编辑 - 我解决了我所面临的问题,因为逗号是查询中的问题,但现在我没有得到所需的输出,即当我向数据库添加新信息时,它不会显示(打印)在文本视图.你们可以检查printDatabase()函数中是否有错误(虽然我没有在log-cat监视器中收到错误).

MainActivity.java

Products.java文件

 package com.instinctcode.sqlitesample;



public class MainActivity extends AppCompatActivity {
EditText buckysInput;
TextView buckysText;
MyDBHandler dbHandler;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    buckysInput=(EditText)findViewById(R.id.buckysInput);
    buckysText=(TextView)findViewById(R.id.buckysText);
    dbHandler= new MyDBHandler(this,null,null,1);
    printDatabase();

}
public void addButtonClicked(View view){
    Products product=new Products(buckysInput.getText().toString());
    dbHandler.addProduct(product);
    printDatabase();
}
public void deleteButtonClicked(View view)
{
    String inputText=buckysInput.getText().toString();
    dbHandler.deleteProduct(inputText);
    printDatabase();
}

 public void printDatabase(View v){
String dbString =dbHandler.databaseToString();
buckysText.setText(dbString);
buckysInput.setText("");
}

}



public class Products {
private int _id;
private String _productname;


public Products(String productname) {
    this._productname …
Run Code Online (Sandbox Code Playgroud)

java mysql sqlite mobile android

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

SQLlite'没有这样的列'错误仅在全新安装的签名APK中

我找到了问题的原因,见下文!

简而言之,由于备份功能恢复了具有相同版本号的旧数据库方案,因此在我的SQLiteHelperClass中都没有调用onUpdate()或onCreate().

我遇到了一个我无法解决的奇怪问题.当我在模拟器中运行我的应用程序时,一切正常.当我在手机上将其作为apk-debug.apk运行时,一切正常,但当我尝试在手机上将其作为已签名的应用程序运行时,我收到此错误:

Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such column: listId (code 1): , while compiling: SELECT * FROM mytable WHERE listId=100 ORDER BY id,name,conc ASC)
Run Code Online (Sandbox Code Playgroud)

如果我删除设置中的所有应用程序数据并重新运行应用程序,一切都在签名的应用程序版本中工作,尽管它最初是首次安装在手机上!

mytable是通过运行db.execSQL(DATABASE_CREATE_MY_TABLE)创建的:(列名是在其他地方设置的常量)

private static final String DATABASE_CREATE_MY_TABLE = "CREATE TABLE "
    + MY_TABLE + "("             
    + ID + " INTEGER, "
    + LIST_ID + " INTEGER, "
    + NAME + " STRING, "
    + CONC + " REAL, "
    + "PRIMARY KEY (" + ID …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

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

Qt-同时处理多个数据库连接

我正在将.net / c#应用程序转换为Qt。我不会每天使用Qt / C ++,所以请多多包涵。

该应用程序同时使用SQLite和MS SQL Server。建立连接后,由于两个数据存储的数据事务量都很高,因此它保持打开状态,并且我不想浪费时间打开和关闭事务之间的连接。

我的目标是创建可用于两种数据库类型的通用管理器类。当其中一个连接打开而没有另一个连接时,该类将按预期工作。但是,当我尝试同时建立到两者的连接时,会收到错误消息:

QSqlDatabasePrivate :: removeDatabase:连接'qt_sql_default_connection'仍在使用中,所有查询将停止工作。

QSqlDatabasePrivate :: addDatabase:重复的连接名称'qt_sql_default_connection',旧的连接已删除。

因此,我已经阅读了有关连接命名的信息。但是,随后我遇到了访问数据库的问题。我已经发布了没有连接命名的数据库管理器类的内容。我正在寻找有关如何以一种干净通用的方式处理此问题的建议。谢谢!

.h文件

#ifndef DATABASEMGR_H
#define DATABASEMGR_H

#include <QObject>
#include <QSqlDatabase>
#include <QVariant>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlRecord>

class DatabaseMgr : public QObject
{
public:
    DatabaseMgr(const QString &databaseType, const QString &connectionString, QObject *parent = 0);
    ~DatabaseMgr();
    QVariant ExecuteScalar(const QString &cmd);
    bool ExecuteNonQuery(const QString &cmd);
    bool IsOpen() const;
    bool Connect();
    bool Disconnect();
    QSqlQueryModel *GetQueryModel(const QString &cmd);
    QSqlQueryModel *GetQueryModel(const QString &cmd, const QMap<QString, QVariant> …
Run Code Online (Sandbox Code Playgroud)

c++ sqlite qt

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

RealM无法使用嵌套类保存数据

我正在为我的项目使用RealM,并且无法在其中保存具有嵌套类的类.我在android studio中收到以下错误.

RealmClass annotation does not support nested classes
Run Code Online (Sandbox Code Playgroud)

这就是我在做的事情:

 public class Test extends RealmObject  {

    @SerializedName("1")
    @Expose
    private Leave leave;
    @SerializedName("2")
    @Expose
    private Today today;
    @SerializedName("3")
    @Expose
    private Vehicle cab;
    @SerializedName("4")
Run Code Online (Sandbox Code Playgroud)

Realm的Gradle版本如下:

compile files('libs/realm-android-0.84.2.jar')
Run Code Online (Sandbox Code Playgroud)

任何帮助对我都非常有用.

database sqlite android realm android-studio

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