java - 如何修复sqlite中的 "no such column"

标签 java sql sqlite

在我添加 UserUid 字段之前,它工作得很好,现在它不断崩溃,我不知道为什么。它是一个数据库,我将其修复为从特定的当前用户中进行选择,但它告诉我该列不存在。

我已经重新创建了 Sqlite 数据库,但运气不佳

我收到的错误是在 GetCountCart() 处,但我认为问题不存在

public class Database extends SQLiteAssetHelper {
private static String DB_NAME="OrderMeDB.db";
private static int DB_VER=1;

public Database(Context context) {
    super(context, DB_NAME,null,DB_VER );
}

public List<OrderModel> getCarts(String userUid)
{
    SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

    String[] sqlSelect = {"UserUid","DenumireProdus" , "Cantitate" , "Pret"};
    String sqlTable = "Comanda";

    qb.setTables(sqlTable);
    Cursor c = qb.query(db , sqlSelect , "UserUid=?",new String[]{userUid},null,null,null);

    final List<OrderModel> result = new ArrayList<>();
    if(c.moveToFirst())
    {
        do{
            result.add(new OrderModel(
                    c.getString(c.getColumnIndex("UserUid")),
                    c.getString(c.getColumnIndex("DenumireProdus")),
                    c.getInt(c.getColumnIndex("Cantitate")),
                    c.getInt(c.getColumnIndex("Pret"))
            ));
        }while (c.moveToNext());
    }
    return result;
}

public boolean checkFoodExists(String userUid , String denumireProdus)
{
    boolean flag = false;
    SQLiteDatabase db = getReadableDatabase();
    Cursor cursor = null;
    String SQLQuery = String.format("SELECT * FROM Comanda WHERE UserUid='%s' AND DenumireProdus='%s'",userUid,denumireProdus);
    cursor = db.rawQuery(SQLQuery,null);
    if(cursor.getCount()>0)
        flag = true;
    else
        flag = false;
    cursor.close();
    return false;
}
public void addToCart(OrderModel order)
{
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("INSERT OR REPLACE INTO Comanda(UserUid,DenumireProdus,Cantitate,Pret) VALUES('%s',%s','%s','%s');",
            order.getUserUid(),
            order.getDenumireProdus(),
            order.getCantitate(),
            order.getPret());
    db.execSQL(query);
}

public void cleanCart(String userUid)
{
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("DELETE FROM Comanda WHERE UserUid='%s'",userUid);
    db.execSQL(query);

}
public void removeFromCart(String userUid,String denumireProdus)
{
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("DELETE FROM Comanda WHERE UserUid='%s' AND DenumireProdus='%s'",userUid,denumireProdus);
    db.execSQL(query);
}
public void increaseCart(String userUid,String denumireProdus)
{
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("UPDATE Comanda SET Cantitate= Cantitate+1 WHERE UserUid='%s' AND DenumireProdus='%s'",userUid,denumireProdus);
    db.execSQL(query);
}
public int getCountCart(String userUid) {
    int count = 0;
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("SELECT COUNT(*) FROM Comanda WHERE UserUid='%s'",userUid);
    Cursor cursor =db.rawQuery(query,null);
    if (cursor.moveToFirst())
    {
        do{
            count = cursor.getInt(0);
        }
        while (cursor.moveToNext());
    }
    return count;

}
public int getItemCount(String denumireProdus , String userUid) {
    int count = 0;
    SQLiteDatabase db = getReadableDatabase();
    String query = String.format("SELECT COUNT(*) FROM Comanda WHERE UserUid='s' AND DenumireProdus='%s' ",userUid,denumireProdus);
    Cursor cursor =db.rawQuery(query,null);
    if (cursor.moveToFirst())
    {
        do{
            count = cursor.getInt(0);
        }
        while (cursor.moveToNext());
    }
    return count;

}
}

这是我收到的错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{Food}: android.database.sqlite.SQLiteException: no such column: UserUid (code 1 SQLITE_ERROR[1]): , while compiling: SELECT COUNT(*) FROM Comanda WHERE UserUid='QM9amP6CX4g24wrq7Hu2'

最佳答案

据我了解,错误消息表明您尚未将该列添加到表中。我对 Java 不太熟悉,但我会检查该列是否已创建并位于正确的表中。

关于java - 如何修复sqlite中的 "no such column",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57509434/

相关文章:

java - 使用 Maven 发布

java.lang.IllegalArgumentException : Sheet index (26) is out of range (0. .2)

sql - 根据另一列增加一列的值

c++ - 如何在 Qt 中创建 SQLite 数据库

mysql - 外键的使用

java - ConcurrentSkipListMap 排序

c# - 将光标或插入点移动到特定页面?

c# - System.Data.SQLite 参数未被替换

SQL - 如何将列及其数据复制到同一个表中的新列?

asp.net - SQL 中函数中的无效对象名称错误