抱歉,如果这是一个很多其他问题的问题..但我检查了他们的问题,但我找不到解决方案(对不起来这里..)
这是我的logcat
11-13 00:38:34.267: E/AndroidRuntime(532): FATAL EXCEPTION: main
11-13 00:38:34.267: E/AndroidRuntime(532): android.database.sqlite.SQLiteException: no such table: translate: , while compiling: SELECT _id,kata_indo,kata_toraja FROM translate WHERE kata_indo = 'anjing' ORDER BY kata_indo
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315)
11-13 00:38:34.267: E/AndroidRuntime(532): at kamus.indonesia.toraja.TranslateIndonesia.trans(TranslateIndonesia.java:107)
11-13 00:38:34.267: E/AndroidRuntime(532): at kamus.indonesia.toraja.TranslateIndonesia$1.onClick(TranslateIndonesia.java:45)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.view.View.performClick(View.java:2408)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.view.View$PerformClick.run(View.java:8816)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.os.Handler.handleCallback(Handler.java:587)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.os.Handler.dispatchMessage(Handler.java:92)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.os.Looper.loop(Looper.java:123)
11-13 00:38:34.267: E/AndroidRuntime(532): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-13 00:38:34.267: E/AndroidRuntime(532): at java.lang.reflect.Method.invokeNative(Native Method)
11-13 00:38:34.267: E/AndroidRuntime(532): at java.lang.reflect.Method.invoke(Method.java:521)
11-13 00:38:34.267: E/AndroidRuntime(532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-13 00:38:34.267: E/AndroidRuntime(532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-13 00:38:34.267: E/AndroidRuntime(532): at dalvik.system.NativeStart.main(Native Method)
这是我的错误发生的类translateindonesia.java
package kamus.indonesia.toraja;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteConstraintException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class TranslateIndonesia extends Activity {
Button translate, back;
EditText bhsIndonesia, bhsToraja;
String translateIndonesia;
public Cursor mCursor;
public DbHelper helper;
public SQLiteDatabase db = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_translateindonesia);
helper = new DbHelper(this);
db = helper.getWritableDatabase();
translate = (Button) findViewById(R.id.btnTerjemahkanIndonesia);
back = (Button) findViewById(R.id.btnBack);
bhsIndonesia = (EditText) findViewById(R.id.editTextIndonesia);
bhsToraja = (EditText) findViewById(R.id.editTextToraja);
translate.setOnClickListener(new View.OnClickListener() {
//@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String search = bhsIndonesia.getText().toString().toLowerCase();
if (search.contains(" ")){
parsing ();
}
else{
trans ();
}
}
});
back.setOnClickListener(new View.OnClickListener() {
//@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent menu = new Intent(TranslateIndonesia.this,MainActivity.class);
menu.putExtra("pesan", "From TranslateIndonesia Menu");
startActivity(menu);
}
});
}
public void parsing (){
String search = bhsIndonesia.getText().toString().toLowerCase();
Cursor cursor = null;
String temp[] = search.split("[^a-zA-Z]+");
String tempS[] = search.split("[a-zA-Z]+");
Boolean char1 = search.substring(0, 1).matches("[a-zA-Z]");
bhsToraja.setText("");
for(int i = 0; i < temp.length; i++){
try{
db = helper.getWritableDatabase();
cursor = db.rawQuery("SELECT LOWER(kata_indo) as kata_indo, LOWER (kata_toraja) as kata_toraja FROM translate WHERE Lower(kata_indo) = ?", new String[]{temp[i]});
int countRow = cursor.getCount();
cursor.moveToFirst();
String specialChar = "";
if(tempS.length > i){
specialChar = tempS[i];
}
if(!char1){
if(countRow > 0){
bhsToraja.append(cursor.getString(cursor.getColumnIndex("kata_toraja")) + specialChar);
} else {
bhsToraja.append(temp[i] + specialChar);
}
} else {
if(countRow > 0){
bhsToraja.append(specialChar + cursor.getString(cursor.getColumnIndex("kata_toraja")));
} else {
bhsToraja.append(specialChar + temp[i]);
}
}
//
}
catch(SQLiteConstraintException ex){
bhsToraja.setText(ex.toString());
}
}
if(tempS.length > 0 && tempS.length > temp.length){
bhsToraja.append(tempS[tempS.length-1]);
}
}
public void trans(){
String result = "";
String search = bhsIndonesia.getText().toString().toLowerCase();
mCursor = db.rawQuery("SELECT _id,kata_indo,kata_toraja FROM translate " + "WHERE kata_indo = '"+search+"' ORDER BY kata_indo",null);
if(mCursor.moveToFirst()){
result = mCursor.getString(2);
for(;!mCursor.isAfterLast();mCursor.moveToNext()){
result = mCursor.getString(2);
}
}
if(result.equals("")){
result = "Kata tidak ditemukan";
}
bhsToraja.setText(result);
}
//end
}
我是否需要编辑某些行,或者即使您将其中一个放在资源文件夹中,我的数据库也不存在?
真的很感谢你的帮助..谢谢你......
这是DBHelper.java
package kamus.indonesia.toraja;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.ContentValues;
import android.content.Context;
import android.content.res.AssetManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
public class DbHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "dbkamus.sqlite";
public static final String KEY_ROWID = "_id";
private static final int VERSION = 1;
private static File DATABASE_FILE;
private boolean mInvalidDatabaseFile = false;
private boolean mIsUpgraded = false;
private Context mContext;
private int mOpenConnections = 0;
private static DbHelper mInstance;
synchronized static public DbHelper getInstance(Context context){
if(mInstance == null) {
mInstance = new DbHelper(context.getApplicationContext());
}
return mInstance;
}
public DbHelper(Context context){
super(context, DATABASE_NAME, null, VERSION);
this.mContext = context;
SQLiteDatabase db = null;
try{
db = getReadableDatabase();
if (db != null){
db.close();
}
DATABASE_FILE = context.getDatabasePath(DATABASE_NAME);
if (mInvalidDatabaseFile){
copyDatabase();
}
if(mIsUpgraded){
doUpgrade();
}
}catch (SQLiteException e){
}finally {
if(db != null && db.isOpen()){
db.close();
}
}
}
@Override
public void onCreate(SQLiteDatabase db){
mInvalidDatabaseFile = true;
}
@Override
public void onUpgrade(SQLiteDatabase database, int old_version, int new_version){
mInvalidDatabaseFile = true;
mIsUpgraded = true;
}
private void doUpgrade(){
}
@Override
public synchronized void onOpen(SQLiteDatabase db){
super.onOpen(db);
mOpenConnections++;
if(!db.isReadOnly()){
db.execSQL("PRAGMA foreign_keys=ON;");;
}
}
@Override
public synchronized void close(){
mOpenConnections--;
if(mOpenConnections == 0){
super.close();
}
}
private void copyDatabase(){
AssetManager assetManager = mContext.getResources().getAssets();
InputStream in = null;
OutputStream out = null;
try{
in = assetManager.open(DATABASE_NAME);
out = new FileOutputStream(DATABASE_NAME);
byte[] buffer = new byte[1024];
int read = 0;
while((read = in.read(buffer)) != -1){
out.write(buffer, 0, read);
}
} catch(IOException e){
}finally{
if(in != null){
try{
in.close();
}catch(IOException e){}
}
if(out != null){
try{
out.close();
}catch(IOException e){}
}
}
setDatabaseVersion();
mInvalidDatabaseFile = false;
}
private void setDatabaseVersion(){
SQLiteDatabase db = null;
try{
db = SQLiteDatabase.openDatabase(DATABASE_FILE.getAbsolutePath(), null, SQLiteDatabase.OPEN_READWRITE);
db.execSQL("PRAGMA user_version = " + VERSION);
} catch(SQLiteException e){
}finally{
if(db != null && db.isOpen()){
db.close();
}
}
}
public Cursor getAll(){
return(getReadableDatabase().rawQuery("SELECT _id, kata_indo, kata_toraja from translate ORDER BY _id ASC", null));
}
public void insertKey(String indo, String toraja){
ContentValues cv = new ContentValues();
cv.put("kata_indo", indo);
cv.put("kata_toraja", toraja);
getWritableDatabase().insert("translate","kata_indo", cv);
}
public void delete(long id){
getWritableDatabase().delete("translate", KEY_ROWID + "=" + id, null);
}
}
答案 0 :(得分:0)
1)启动您的申请。 2)转到ADM监视器 3)找到你的app =&gt;转到数据查找数据库并删除 4)重启app //////////////////// 初始化你的dbHelper beforeonCreate(当你声明时)
建议:不要使对象和数据库具有相同的名称。