Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android应用程序开发过程中的空数据库_Android_Database_Sqlite - Fatal编程技术网

android应用程序开发过程中的空数据库

android应用程序开发过程中的空数据库,android,database,sqlite,Android,Database,Sqlite,我已经在sqlite3上建立了一个完整的数据库,并将文件(复制粘贴)复制到我的项目的assets文件夹中。实际上,数据库文件夹是存在的。然而,当我试图通过代码访问数据库时,logcat说“表名”不存在 我在sqlite3中反复检查了我的数据库,上面提到的表中也有一些数据 这是主要活动: package com.noura.luba; import android.app.Activity; import android.content.Intent; import android.os.Bun

我已经在sqlite3上建立了一个完整的数据库,并将文件(复制粘贴)复制到我的项目的assets文件夹中。实际上,数据库文件夹是存在的。然而,当我试图通过代码访问数据库时,logcat说“表名”不存在

我在sqlite3中反复检查了我的数据库,上面提到的表中也有一些数据

这是主要活动:

package com.noura.luba;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {


    TextView forgotPass, createAcc;
    Button loginButton;
    EditText userID, pass;
    LoginDataBaseAdapter loginDataBaseAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);

             loginDataBaseAdapter=new LoginDataBaseAdapter(this);
             loginDataBaseAdapter=loginDataBaseAdapter.open();

             forgotPass= (TextView)findViewById(R.id.forgotPasswordTextView);
             createAcc= (TextView)findViewById(R.id.createAccountTextView);
             loginButton= (Button)findViewById(R.id.loginButton);
             userID=(EditText)findViewById(R.id.userIDEditText);
             userID.setHint("UserID");
            // pass=(EditText)findViewById(R.id.passwordEditText);
             pass = ((EditText) findViewById(R.id.passwordEditText)); 
             pass.setHint("Password");
             pass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);


             createAcc.setOnClickListener(new View.OnClickListener() {

                 public void onClick(View v) {

                     Intent intentCreateAcc = new Intent(getApplicationContext(), CreateAccActivity.class);
                     startActivity(intentCreateAcc);

                 }
             });

           forgotPass.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
             Intent intentForgotPass = new Intent(getApplicationContext(), ForgotPassActivity.class);
                 startActivity(intentForgotPass);
            }
             }); 

       //      loginButton.setOnClickListener(new View.OnClickListener() {
         //      public void onClick(View v) {

           //        String id=userID.getText().toString();

            //       Intent intentLogin = new Intent(getApplicationContext(), Home.class);

                //   intentLogin.putExtra("User_ID", id);
                //   startActivity(intentLogin);

           //    }

          //   }); 

            loginButton.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {

                    String userName = userID.getText().toString();
                    String password = pass.getText().toString();

                    String storedPassword = loginDataBaseAdapter
                            .getSingleEntry(userName);

                    if (password.equals(storedPassword)) {
                        Toast.makeText(MainActivity.this, "Login Successful",
                                Toast.LENGTH_LONG).show();
                        Intent intentLogin = new Intent(
                                getApplicationContext(), Home.class);

                        intentLogin.putExtra("User_ID", userName);
                        startActivity(intentLogin);

                    } else {

                        Toast.makeText(MainActivity.this,
                                "User Name and Password do not match",
                                Toast.LENGTH_LONG).show();

                    }
                }
            });


    }



   /* public void LogIn(View V)
    {

        final Dialog dialog =  new Dialog(MainActivity.this);

        dialog.setContentView(R.layout.activity_main);
        dialog.setTitle("LUBA LogIn");

        final EditText userID=(EditText)dialog.findViewById(R.id.userIDEditText);
        final EditText pass=(EditText)dialog.findViewById(R.id.passwordEditText); 

        Button login = (Button)dialog.findViewById(R.id.loginButton);

        final TextView forgotPass=(TextView)dialog.findViewById(R.id.forgotPasswordTextView);
        final TextView createAcc= (TextView)dialog.findViewById(R.id.createAccountTextView);


        //Set On ClickListener
        login.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                String userName= userID.getText().toString();
                String password=pass.getText().toString();

                String storedPassword = loginDataBaseAdapter.getSingleEntry(userName);

                if(password.equals(storedPassword))
                {
                    Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_LONG).show();
                    Intent intentLogin = new Intent(getApplicationContext(), Home.class);

                 intentLogin.putExtra("User_ID", userName);
                 startActivity(intentLogin);

                }
                else
                {

                    Toast.makeText(MainActivity.this, "User Name and Password do not match", Toast.LENGTH_LONG).show();

                }
            }
        });

        dialog.show();
    }
*/


    protected void onDestroy() {

        super.onDestroy();

        loginDataBaseAdapter.close();

    }


}
这是尝试访问数据库的活动:

package com.noura.luba;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;

public class LoginDataBaseAdapter {

    static final String DATABASE_NAME = "seniorLUBA";
       static final int DATABASE_VERSION = 1;

       public static final int NAME_COLUMN = 1;

       public SQLiteDatabase db;
       private final Context context;

       private DataBaseHelper dbHelper;

       public LoginDataBaseAdapter(Context _context)
       {

           context = _context;
           dbHelper = new DataBaseHelper(context);

       }

       public LoginDataBaseAdapter open() throws SQLException
       {
           db=dbHelper.getWritableDatabase();
           return this;
       }

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

       public SQLiteDatabase getDatabaseInstance()
       {
           return db;
       }

       public void insertEntry(String password)
       {

           ContentValues newValues = new ContentValues();
           newValues.put("StdPass", password);

           db.insert("student", null, newValues);
           Toast.makeText(context,  "User Info Saved", Toast.LENGTH_LONG).show();

       }

       public int deleteEntry(String UserName)
       {

           String where="StdId="+UserName;
           int numberOFEntriesDeleted = db.delete("student", where, new String[]{UserName});
           Toast.makeText(context, "Number of Entry Deleted Successfully : " +numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
           return numberOFEntriesDeleted;
       }

       public String getSingleEntry(String userName)
       {


          Cursor cursor=db.query("student", null, "StdID="+userName, new String[]{userName}, null, null, null);
           if(cursor.getCount()<1)
               return "DOES NOT EXIST";
           cursor.moveToFirst();
           String password= cursor.getString(cursor.getColumnIndex("StdPass"));
           return password;
       }

       public String getSecretInfo(String SecretInfo){

           Cursor cursor=db.query("student", null, "StdID="+SecretInfo, new String[]{SecretInfo}, null, null, null);
           if(cursor.getCount()<1)
               return "Does Not Exist";
           else return SecretInfo;


       }



public void updateEntry(String userName, String password)
{
    ContentValues updatedValues = new ContentValues();

    updatedValues.put("StdID", userName);
    updatedValues.put("StdPass", password);

    String where="StdID="+userName;
    db.update("student", updatedValues, where, new String[]{userName});
}
}
这是logcat:

    11-16 22:36:29.076: W/ApplicationPackageManager(28412): getCSCPackageItemText()
11-16 22:36:29.116: E/MoreInfoHPW_ViewGroup(28412): Parent view is not a TextView
11-16 22:36:29.246: I/Adreno-EGL(28412): <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build:  ()
11-16 22:36:29.246: I/Adreno-EGL(28412): OpenGL ES Shader Compiler Version: E031.24.00.07
11-16 22:36:29.246: I/Adreno-EGL(28412): Build Date: 01/22/14 Wed
11-16 22:36:29.246: I/Adreno-EGL(28412): Local Branch: base_au149_adreno_au169_patches
11-16 22:36:29.246: I/Adreno-EGL(28412): Remote Branch: 
11-16 22:36:29.246: I/Adreno-EGL(28412): Local Patches: 
11-16 22:36:29.246: I/Adreno-EGL(28412): Reconstruct Branch: 
11-16 22:36:29.296: D/OpenGLRenderer(28412): Enabling debug mode 0
11-16 22:36:42.636: E/SQLiteLog(28412): (1) no such table: student
11-16 22:36:42.636: D/AndroidRuntime(28412): Shutting down VM
11-16 22:36:42.636: W/dalvikvm(28412): threadid=1: thread exiting with uncaught exception (group=0x41e66da0)
11-16 22:36:42.646: E/AndroidRuntime(28412): FATAL EXCEPTION: main
11-16 22:36:42.646: E/AndroidRuntime(28412): Process: com.noura.luba, PID: 28412
11-16 22:36:42.646: E/AndroidRuntime(28412): android.database.sqlite.SQLiteException: no such table: student (code 1): , while compiling: SELECT * FROM student WHERE StdID=20121400
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1121)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:694)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1436)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1283)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1154)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1322)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at com.noura.luba.LoginDataBaseAdapter.getSingleEntry(LoginDataBaseAdapter.java:70)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at com.noura.luba.MainActivity$3.onClick(MainActivity.java:80)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.view.View.performClick(View.java:4626)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.view.View$PerformClick.run(View.java:19293)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.os.Handler.handleCallback(Handler.java:733)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.os.Handler.dispatchMessage(Handler.java:95)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.os.Looper.loop(Looper.java:157)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at android.app.ActivityThread.main(ActivityThread.java:5293)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at java.lang.reflect.Method.invokeNative(Native Method)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at java.lang.reflect.Method.invoke(Method.java:515)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
11-16 22:36:42.646: E/AndroidRuntime(28412):    at dalvik.system.NativeStart.main(Native Method)
11-16 22:36:43.866: I/Process(28412): Sending signal. PID: 28412 SIG: 9

解决方案是在表student的名称中添加空格

package com.noura.luba;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;

public class LoginDataBaseAdapter {

    static final String DATABASE_NAME = "seniorLUBA.db";
       static final int DATABASE_VERSION = 1;

       public static final int NAME_COLUMN = 1;

       public SQLiteDatabase db;
       private final Context context;

       private DataBaseHelper dbHelper;

       public LoginDataBaseAdapter(Context _context)
       {

           context = _context;
           dbHelper = new DataBaseHelper(context);

       }

       public LoginDataBaseAdapter open() throws SQLException
       {
           db=dbHelper.getWritableDatabase();
           return this;
       }

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

       public SQLiteDatabase getDatabaseInstance()
       {
           return db;
       }

       public void insertEntry(String password)
       {

           ContentValues newValues = new ContentValues();
           newValues.put("StdPass", password);

           db.insert("student ", null, newValues);
           Toast.makeText(context,  "User Info Saved", Toast.LENGTH_LONG).show();

       }

       public int deleteEntry(String UserName)
       {

           String where="StdId="+UserName;
           int numberOFEntriesDeleted = db.delete("student ", where, new String[]{UserName});
           Toast.makeText(context, "Number of Entry Deleted Successfully : " +numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
           return numberOFEntriesDeleted;
       }

       public String getSingleEntry(String userName)
       {


          Cursor cursor=db.query("student ", null, "StdID="+userName, new String[]{userName}, null, null, null);
           if(cursor.getCount()<1)
               return "DOES NOT EXIST";
           cursor.moveToFirst();
           String password= cursor.getString(cursor.getColumnIndex("StdPass"));
           return password;
       }

       public String getSecretInfo(String SecretInfo){

           Cursor cursor=db.query("student ", null, "StdID="+SecretInfo, new String[]{SecretInfo}, null, null, null);
           if(cursor.getCount()<1)
               return "Does Not Exist";
           else return SecretInfo;


       }



public void updateEntry(String userName, String password)
{
    ContentValues updatedValues = new ContentValues();

    updatedValues.put("StdID", userName);
    updatedValues.put("StdPass", password);

    String where="StdID="+userName;
    db.update("student ", updatedValues, where, new String[]{userName});
}
}
包com.noura.luba;
导入android.content.ContentValues;
导入android.content.Context;
导入android.database.Cursor;
导入android.database.SQLException;
导入android.database.sqlite.SQLiteDatabase;
导入android.widget.Toast;
公共类后勤数据库适配器{
静态最终字符串数据库\u NAME=“seniorLUBA.db”;
静态最终int数据库_版本=1;
公共静态final int NAME_COLUMN=1;
公共数据库数据库;
私人最终语境;
私有数据库助手dbHelper;
公共登录数据库适配器(上下文_上下文)
{
上下文=_上下文;
dbHelper=新数据库助手(上下文);
}
public LoginDataBaseAdapter open()引发SQLException
{
db=dbHelper.getWritableDatabase();
归还这个;
}
公众假期结束()
{
db.close();
}
公共SQLiteDatabase getDatabaseInstance()
{
返回分贝;
}
public void insertEntry(字符串密码)
{
ContentValues newValues=新ContentValues();
newValues.put(“StdPass”,密码);
db.插入(“学生”,空,新值);
Toast.makeText(上下文,“用户信息已保存”,Toast.LENGTH_LONG.show();
}
public int deleteEntry(字符串用户名)
{
字符串,其中=“StdId=”+用户名;
int numberofentriesdelected=db.delete(“学生”,其中,新字符串[]{UserName});
Toast.makeText(上下文,“成功删除的条目数:“+numberofentriesdelected,Toast.LENGTH_LONG).show();
已删除的返回编号;
}
公共字符串getSingleEntry(字符串用户名)
{
Cursor Cursor=db.query(“student”,null,“StdID=“+userName,新字符串[]{userName},null,null,null);

if(cursor.getCount()请发布一些您试图从资产文件夹复制数据库的代码。@bachu我已将其添加到问题中,请检查您通过命令行查询时得到的结果。?选择*来自学生;我获得该表以前输入的所有数据database@bachu显然,表名在en处有一个空格d、 …这就是它找不到它的原因我解决了表格找不到的问题,但是我遇到了另一个问题…但是我无法理解日志,请你检查一下好吗?我将在下面添加它
11-18 01:27:04.235: W/KeyCharacterMap(427): No keyboard for id 0
11-18 01:27:04.235: W/KeyCharacterMap(427): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
11-18 01:27:15.595: D/AndroidRuntime(427): Shutting down VM
11-18 01:27:15.595: W/dalvikvm(427): threadid=1: thread exiting with uncaught exception (group=0x40015560)
11-18 01:27:15.615: E/AndroidRuntime(427): FATAL EXCEPTION: main
11-18 01:27:15.615: E/AndroidRuntime(427): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x2ff2a0
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteProgram.native_bind_string(Native Method)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:244)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:185)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1356)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1235)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1189)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1271)
11-18 01:27:15.615: E/AndroidRuntime(427):  at com.noura.luba.LoginDataBaseAdapter.getSingleEntry(LoginDataBaseAdapter.java:70)
11-18 01:27:15.615: E/AndroidRuntime(427):  at com.noura.luba.MainActivity$3.onClick(MainActivity.java:80)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.view.View.performClick(View.java:2485)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.view.View$PerformClick.run(View.java:9080)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.os.Handler.handleCallback(Handler.java:587)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.os.Handler.dispatchMessage(Handler.java:92)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.os.Looper.loop(Looper.java:123)
11-18 01:27:15.615: E/AndroidRuntime(427):  at android.app.ActivityThread.main(ActivityThread.java:3683)
11-18 01:27:15.615: E/AndroidRuntime(427):  at java.lang.reflect.Method.invokeNative(Native Method)
11-18 01:27:15.615: E/AndroidRuntime(427):  at java.lang.reflect.Method.invoke(Method.java:507)
11-18 01:27:15.615: E/AndroidRuntime(427):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-18 01:27:15.615: E/AndroidRuntime(427):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-18 01:27:15.615: E/AndroidRuntime(427):  at dalvik.system.NativeStart.main(Native Method)
11-18 01:27:19.587: I/Process(427): Sending signal. PID: 427 SIG: 9
package com.noura.luba;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;

public class LoginDataBaseAdapter {

    static final String DATABASE_NAME = "seniorLUBA.db";
       static final int DATABASE_VERSION = 1;

       public static final int NAME_COLUMN = 1;

       public SQLiteDatabase db;
       private final Context context;

       private DataBaseHelper dbHelper;

       public LoginDataBaseAdapter(Context _context)
       {

           context = _context;
           dbHelper = new DataBaseHelper(context);

       }

       public LoginDataBaseAdapter open() throws SQLException
       {
           db=dbHelper.getWritableDatabase();
           return this;
       }

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

       public SQLiteDatabase getDatabaseInstance()
       {
           return db;
       }

       public void insertEntry(String password)
       {

           ContentValues newValues = new ContentValues();
           newValues.put("StdPass", password);

           db.insert("student ", null, newValues);
           Toast.makeText(context,  "User Info Saved", Toast.LENGTH_LONG).show();

       }

       public int deleteEntry(String UserName)
       {

           String where="StdId="+UserName;
           int numberOFEntriesDeleted = db.delete("student ", where, new String[]{UserName});
           Toast.makeText(context, "Number of Entry Deleted Successfully : " +numberOFEntriesDeleted, Toast.LENGTH_LONG).show();
           return numberOFEntriesDeleted;
       }

       public String getSingleEntry(String userName)
       {


          Cursor cursor=db.query("student ", null, "StdID="+userName, new String[]{userName}, null, null, null);
           if(cursor.getCount()<1)
               return "DOES NOT EXIST";
           cursor.moveToFirst();
           String password= cursor.getString(cursor.getColumnIndex("StdPass"));
           return password;
       }

       public String getSecretInfo(String SecretInfo){

           Cursor cursor=db.query("student ", null, "StdID="+SecretInfo, new String[]{SecretInfo}, null, null, null);
           if(cursor.getCount()<1)
               return "Does Not Exist";
           else return SecretInfo;


       }



public void updateEntry(String userName, String password)
{
    ContentValues updatedValues = new ContentValues();

    updatedValues.put("StdID", userName);
    updatedValues.put("StdPass", password);

    String where="StdID="+userName;
    db.update("student ", updatedValues, where, new String[]{userName});
}
}