如何选择表错误,这是附加的代码?

时间:2015-05-19 19:27:23

标签: android

代码,错误选择表,我需要显示数据表列表视图,但要运行APP,错误到**"没有这样的表:main(code1):,编译时:SELECT * FROM main"**.

数据库外部sqlite复制到文件夹数据库名称。

package sam.app.shiftroid;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
//=======================database=========================
DBOpenHelper myDbHelper;
    SQLiteDatabase db;
    ListAdapter adapter;
    ArrayList<HashMap<String, String>> data;
//=====================end =================================    
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button b = (Button) findViewById(R.id.btnClose);
    Button btnSave = (Button) findViewById(R.id.btnSave);


//========================== db =========================
    try
        {
     ListView lst=(ListView) findViewById(R.id.listView1);
    Load_Database();
        db = myDbHelper.getReadableDatabase();
        Cursor    c = db.rawQuery("SELECT * FROM main", null);
            data = new ArrayList<HashMap<String, String>>();

            for (; c.moveToNext();) {
                HashMap<String, String> map = new HashMap<String, String>();
                String id = c.getString(c.getColumnIndex("a"));
                String name = c.getString(c.getColumnIndex("aa"));
                map.put("a", id);
                map.put("aa", name);
                data.add(map);
            }
            adapter = new list_view(this, data);

            lst.setAdapter(adapter);
        }
     catch (SQLiteException e) {
         AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
         dialog.setTitle("پرکردن تکست ها");
         dialog.setMessage("\n"+String.valueOf(e.toString()+"ست کردن متن"));
         dialog.setIcon(R.drawable.ic_launcher);
         dialog.show();
      }
//====================== end ==============================


    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this, RegShift.class));
        }
    });
    btnSave.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            try{

             AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
             dialog.setTitle("پرکردن تکست ها");
             dialog.setMessage("\n"+String.valueOf("ست کردن متن"));
             dialog.setIcon(R.drawable.ic_launcher);
             dialog.show();
            }
             catch (Exception e) {
                 AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                 dialog.setTitle("پرکردن تکست ها");
                 dialog.setMessage("\n"+String.valueOf(e.toString()+"ست کردن متن"));
                 dialog.setIcon(R.drawable.ic_launcher);
                 dialog.show();
              }
        }
    });
    Button b2 = (Button) findViewById(R.id.button3);

    b2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            try
                {
            EditText    etLName = (EditText) findViewById(R.id.editText1);
             Intent intent = new Intent(MainActivity.this, SaveWork.class); 

                intent.putExtra("lname", etLName.getText().toString());
                startActivity(intent);

                }
             catch (Exception e) {
                 AlertDialog.Builder dialog = new     AlertDialog.Builder(MainActivity.this);
                 dialog.setTitle("اموزش AlertDialog");
                 dialog.setMessage(e.toString());
                 dialog.setIcon(R.drawable.ic_launcher);
                 dialog.show();
             }
        }
    });
} 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}
private void Load_Database() throws Error {
    myDbHelper = new DBOpenHelper(MainActivity.this);
    try {

        myDbHelper.createDataBase();

    } catch (IOException ioe) {

        throw new Error("Unable to create database");

    }

    try {

        myDbHelper.openDataBase();
        } catch (SQLException sqle) {
        throw sqle;

        }
    }
}

帮帮我

1 个答案:

答案 0 :(得分:0)

这是myDBhelper

 enter code here

 package sam.app.shiftroid;



public class DBOpenHelper extends SQLiteOpenHelper {
String DB_PATH = null;
public static String DB_NAME = "db_shift1";
private SQLiteDatabase myDataBase;
private final Context myContext;

/**
 * Constructor Takes and keeps a reference of the passed context in order to
 * access to the application assets and resources.
 * 
 * @param context
 */
public DBOpenHelper(Context context) {

    super(context, DB_NAME, null, 2);
    this.myContext = context;
    DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/";
}

public void createDataBase() throws IOException {

    boolean dbExist = checkDataBase();

    if (dbExist) {
        // do nothing - database already exist
    } else {

        // By calling this method and empty database will be created into
        // the default system path
        // of your application so we are gonna be able to overwrite that
        // database with our database.
        this.getReadableDatabase();

        try {

            copyDataBase();

        } catch (IOException e) {

            throw new Error("Error copying database");

        }
    }

}

private boolean checkDataBase() {

    SQLiteDatabase checkDB = null;

    try {
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null,
                SQLiteDatabase.OPEN_READONLY);

    } catch (SQLiteException e) {

        // database does\'t exist yet.

    }

    if (checkDB != null) {

        checkDB.close();

    }

    return checkDB != null ? true : false;
}

/**
 * Copies your database from your local assets-folder to the just created
 * empty database in the system folder, from where it can be accessed and
 * handled. This is done by transfering bytestream.
 * */
private void copyDataBase() throws IOException {

    // Open your local db as the input stream
    InputStream myInput = myContext.getAssets().open(DB_NAME);

    // Path to the just created empty db
    String outFileName = DB_PATH + DB_NAME;

    // Open the empty db as the output stream
    OutputStream myOutput = new FileOutputStream(outFileName);

    // transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, length);
    }

    // Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();

}

public void openDataBase() throws SQLException {

    // Open the database
    String myPath = DB_PATH + DB_NAME;
    // SQLiteDatabase.NO_LOCALIZED_COLLATORS
    myDataBase = SQLiteDatabase.openDatabase(myPath, null,
            SQLiteDatabase.OPEN_READONLY
                    | SQLiteDatabase.NO_LOCALIZED_COLLATORS
                    | SQLiteDatabase.CREATE_IF_NECESSARY);

}

@Override
public synchronized void close() {

    if (myDataBase != null)
        myDataBase.close();

    super.close();

}

// return cursor
public Cursor query(String table, String[] columns, String selection,
        String[] selectionArgs, String groupBy, String having,
        String orderBy) {
    return myDataBase.query("pwp_singers", null, null, null, null, null,
            null);

}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    String CREATE_BOOK_TABLE = "CREATE TABLE main ( " +
            "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
            "title TEXT, "+
            "author TEXT )";

    // create books table
    db.execSQL(CREATE_BOOK_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub

}

}