2012-04-01 4 views
0

コードに追加されません:SQLクラスを使用するクラスのための次のようにデータがSQLクラスのSQLデータベース

import java.text.SimpleDateFormat; 
import java.util.Date; 

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

public class sqlDatabase { 

public static final String KEY_ROWID = "_id"; 
public static final String KEY_PURCHASEREFUND = "_purchaserefund"; 
public static final String KEY_LOCATION = "_location"; 
public static final String KEY_SHOPTYPE = "_shoptype"; 
public static final String KEY_PRICE = "_price"; 
public static final String KEY_DATE = "_date"; 
public static final String KEY_CARDUSED = "_cardused"; 

private static final String DATABASE_NAME = "receiptdb"; 
private static final String DATABASE_TABLE = "receipttable"; 
private static final int DATABASE_VERSION = 1; 

private receiptDBhelper receiptHelper; 
private final Context receiptContext; 
private SQLiteDatabase receiptDatabase; 


private static class receiptDBhelper extends SQLiteOpenHelper{ 

    public receiptDBhelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    }  

    @Override 
    public void onCreate(SQLiteDatabase rdb) { 
     // TODO Auto-generated method stub 
     rdb.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
       KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       KEY_DATE + " TEXT NOT NULL, " + 
       KEY_CARDUSED + " TEXT NOT NULL, " + 
       KEY_LOCATION + " TEXT NOT NULL, " + 
       KEY_SHOPTYPE + " TEXT NOT NULL, " + 
       KEY_PRICE + " TEXT NOT NULL);"   
     ); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase rdb, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     rdb.execSQL("DROP_TABLE_IF_EXISTS " + DATABASE_TABLE); 
     onCreate(rdb); 
    } 

} 

public sqlDatabase(Context c){ 
    receiptContext = c; 
} 

public sqlDatabase open() throws SQLException { 
    receiptHelper = new receiptDBhelper(receiptContext); 
    receiptDatabase = receiptHelper.getWritableDatabase(); 
    return this;   
} 

public void close(){ 
    receiptHelper.close(); 
} 

public long createEntry(String purchaserefund, String shoptype, 
     String location, String price, String cardused) { 
    // TODO Auto-generated method stub 

    ContentValues dbcv = new ContentValues(); 

    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date date = new Date(); 

    dbcv.put(KEY_PURCHASEREFUND, purchaserefund); 
    dbcv.put(KEY_SHOPTYPE, shoptype); 
    dbcv.put(KEY_LOCATION, location); 
    dbcv.put(KEY_PRICE, price); 
    dbcv.put(KEY_CARDUSED, cardused); 
    dbcv.put(KEY_DATE, dateFormat.format(date));   

    return receiptDatabase.insert(DATABASE_TABLE, null, dbcv); 
} 

} 

関連するコード:限り、私は承知しているよう

String purchaserefund = precspurchaserefunds; 
String shoptype = precsshoptypes; 
String location = precsshoptypesselection[precsshoptypeselection]; 
String price = precsprices; 
String cardused = precscarddetails[precscardusedselection]; 

sqlDatabase entry = new sqlDatabase(precs.this); 

entry.open(); 

entry.createEntry(purchaserefund, shoptype, location, price, cardused); 

entry.close(); 

を、すべてのコードがあり、正しいですが、何らかの理由でSQLデータベースブラウザを調べると、値が挿入されません。

+0

私はSQLiteのことは知らないが、あなたがそれらをコミットすることを忘れてしまった場合、トランザクションデータベースと、一般的には変更は捨てることができます。あなたがそれらをコミットするまで、変更は他のすべてのセッションで見えなくなることもあります。 – Morbo

+0

私は、 "Commit"メソッドや文字列などを使わずに動作する他の複数のSQLデータベースを持っています! –

答えて

0

私は問題が実際にSQLデータベースの内容をチェックしていると思います。通常、dbファイルは/ data/package_name/databases(またはそのようなもので、正確なパスは覚えていません)の下に格納されています。ルートアクセスがなければ、そのフォルダ内のファイルを読み取ることはできません。おそらく、問題のSQLデータベースブラウザとそう

..

あなたのアプリを通して、あなたのデータにアクセスし、データがあるかどうかを確認してください。また、LogCatに注目して、Dbに関連するいくつかの警告/エラーがあるかもしれません。

(PS。呼んで「コミット」する必要はありません...)

+0

あなたはまさに正しいのですが、突然突然それがランダムに働き始めました!愚かなSQLハハ! –

0

コードのどこにもコミットがありません。それはデータベースやSharedPreferencesに書き込むときに私がいつも忘れていることなので、私が探している最初のことです。 Lemmeはそれが解決策ではないかどうかを知っています。

関連する問題