简体   繁体   English

我的Android应用程序在模拟器上运行,但无法在我的Android设备上运行

[英]My Android application runs on emulator but not working on my android device

My application works fine on android emulator. 我的应用程序在android模拟器上运行良好。 When I'm trying to run it on my device LogCat column gives me info that there is no such columns: USERNAME. 当我尝试在设备上运行它时,LogCat列会为我提供以下信息:USERNAME。 On emulator my SQLite database is created normally and I can add new users and sign but in device there is an exception when I'm trying doing this. 在模拟器上,我的SQLite数据库正常创建,可以添加新用户并签名,但是在设备上尝试执行此操作时会出现异常。

Here is a Log file when i'm trying to create new user: 当我尝试创建新用户时,这是一个日志文件:

02-14 17:29:07.997: D/BubblePopupHelper(9620): isShowingBubblePopup : false
02-14 17:30:07.617: E/SQLiteLog(10274): (1) no such column: USERNAME
02-14 17:30:07.627: D/AndroidRuntime(10274): Shutting down VM
02-14 17:30:07.627: E/AndroidRuntime(10274): FATAL EXCEPTION: main
02-14 17:30:07.627: E/AndroidRuntime(10274): Process: com.example.naukamagisterka, PID: 10274
02-14 17:30:07.627: E/AndroidRuntime(10274): android.database.sqlite.SQLiteException: no such column: USERNAME (code 1): , while compiling: SELECT * FROM USERS WHERE  USERNAME=?
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:897)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:508)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:726)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1426)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1273)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1144)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1312)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at com.example.naukamagisterka.LoginDataBaseAdapter.getSingleEntryUsers(LoginDataBaseAdapter.java:81)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at com.example.naukamagisterka.SignUPActivity$1.onClick(SignUPActivity.java:44)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.view.View.performClick(View.java:4764)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.view.View$PerformClick.run(View.java:19844)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.os.Handler.handleCallback(Handler.java:739)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.os.Handler.dispatchMessage(Handler.java:95)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.os.Looper.loop(Looper.java:135)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at android.app.ActivityThread.main(ActivityThread.java:5376)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at java.lang.reflect.Method.invoke(Native Method)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at java.lang.reflect.Method.invoke(Method.java:372)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
02-14 17:30:07.627: E/AndroidRuntime(10274):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)

AndroidManifest.xml: AndroidManifest.xml中:

  <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.naukamagisterka"
        android:versionCode="1"
        android:versionName="1.0" >

        <uses-sdk
            android:minSdkVersion="17"
            android:targetSdkVersion="17" />

        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".ActivityLogin"
                android:label="@string/title_activity_activity_login" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".SignUPActivity"
                android:label="@string/title_activity_sign_up" >
            </activity>
            <activity
                android:name=".HomeAfterLogin"
                android:label="@string/title_activity_home_after_login" >
            </activity>
        </application>

    </manifest>

ActivityLogin.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" tools:context=".LoginActivity"
    android:background="#0099CC"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true">

   <LinearLayout
        android:id="@+id/ll1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical|center_horizontal">

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/logo" />



    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_vertical|center_horizontal">
        <ProgressBar android:id="@+id/login_progress" style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:visibility="gone" />
        <ScrollView android:id="@+id/login_form" android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"
                android:orientation="vertical">

                <LinearLayout
                    android:id="@+id/email_login_form"
                    android:layout_width="match_parent"
                    android:layout_height="254dp"
                    android:orientation="vertical" >

                    <AutoCompleteTextView android:id="@+id/email" android:layout_width="match_parent"
                        android:layout_height="wrap_content" android:hint="@string/prompt_email"
                        android:inputType="textEmailAddress" android:maxLines="1"
                        android:singleLine="true"
                        android:layout_marginBottom="10dp"
                        android:textColorHint="#ffffffff"
                        android:textColor="#ffffffff" />

                    <EditText android:id="@+id/password" android:layout_width="match_parent"
                        android:layout_height="wrap_content" android:hint="@string/prompt_password"
                        android:imeActionLabel="@string/action_sign_in"
                        android:imeOptions="actionUnspecified" android:inputType="textPassword"
                        android:maxLines="1" android:singleLine="true"
                        android:layout_marginBottom="10dp"
                        android:textColorHint="#ffffffff"
                        android:textColor="#ffffffff" />

                    <Button
                        android:id="@+id/email_sign_in_button"
                        style="?android:textAppearanceSmall"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="16dp"
                        android:background="#66CCFF"
                        android:text="@string/action_sign_in"
                        android:textColor="#ffffffff"
                        android:textStyle="bold" />

                </LinearLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll3"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="bottom|center_horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/sign_up"
            android:id="@+id/signUpTextView"
            android:autoLink="web"
            android:textColor="#ffffffff" />
    </LinearLayout>
</LinearLayout>

ActivityLogin.java ActivityLogin.java

package com.example.naukamagisterka;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.method.DialerKeyListener;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class ActivityLogin extends Activity {
    Button btnLogin;
    TextView btnSingIn;
    LoginDataBaseAdapter loginDataBaseAdapter;


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

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

        btnLogin = (Button)findViewById(R.id.email_sign_in_button);
        btnSingIn = (TextView)findViewById(R.id.signUpTextView);

        final EditText editTextEmail = (EditText)findViewById(R.id.email);
        final EditText editTextPassword = (EditText)findViewById(R.id.password);




        btnSingIn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent intentSignIn = new Intent(getApplicationContext(), SignUPActivity.class);
                startActivity(intentSignIn);
            }
        });

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //try {
                    final String userName = editTextEmail.getText().toString();
                     final String userPassword = editTextPassword.getText().toString();
                      String storedPassword = loginDataBaseAdapter.getSingleEntry(userName);

                        if (storedPassword.equals(userPassword)){
                            Toast.makeText(ActivityLogin.this, "Udana próba zalogowania.", Toast.LENGTH_LONG).show();
                            setContentView(R.layout.activity_home_after_login);
                            }   
                        else{
                            Toast.makeText(ActivityLogin.this, "Niepoprawny e-mail lub hasło! Spróbuj ponownie.", Toast.LENGTH_LONG).show();
                            }
                } //catch (Exception e) {
                //
                //}

        });


    }



    @Override
    protected void onDestroy() {
        super.onDestroy();

        loginDataBaseAdapter.close();
    }

    @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_login, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

LoginDataBaseAdapter.java LoginDataBaseAdapter.java

package com.example.naukamagisterka;

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 = "WylaczSwiatloDB";
    static final int DATABASE_VERSION=1;
    public static final int NAME_COULMN=1;

    public String Email;
    public String Password;
    public int Points;

    LoginDataBaseAdapter loginDataBaseAdapter;

    static final String DATABASE_CREATE = "CREATE TABLE "+"USERS"+"(USERNAME VARCHAR, PASSWORD VARCHAR, POINTS INT)"+";"+"";

    public SQLiteDatabase db;
    private final Context context;
    private DataBaseHelper dbHelper;


    public LoginDataBaseAdapter(Context _context){
        context=_context;
        dbHelper = new DataBaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION);

    }

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

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

    public SQLiteDatabase getDatabaseInstance(){
        return db;
    }

    public void insertEntry(String userName, String password){
        ContentValues newValues = new ContentValues();

        newValues.put("USERNAME", userName);
        newValues.put("PASSWORD", password);
        newValues.put("POINTS", 0);

        db.insert("USERS", null, newValues);
    }

    public int deleteEntry(String UserName){
        String where = "USERNAME=?";
        int numberOFEntriesDeleted = db.delete("USERS", where, new String[]{UserName});
        return numberOFEntriesDeleted;
    }

    public String getSingleEntry(String userName){
        Cursor cursor = db.query("USERS", null, "USERNAME=?", new String[]{userName},null,null,null);
        if (cursor.getCount()<1) //Nie ma username
        {
            cursor.close();
            return "NOT EXIST";
        }

        else{
        cursor.moveToFirst();
        String password = cursor.getString(cursor.getColumnIndex("PASSWORD"));
        cursor.close();
        return password;
        }

    }

    public String getSingleEntryUsers(String userName){
        Cursor cursor = db.query("USERS", null, " USERNAME=?", new String[]{userName},null,null,null);
        if (cursor.getCount()<1) //Nie ma username
        {
            cursor.close();
            return "NOT EXIST";
        }

        else{
        cursor.moveToFirst();
        String user = cursor.getString(cursor.getColumnIndex("USERNAME"));
        cursor.close();
        return user;
        }

    }

    public void updateEntry(String userName, String password){
            ContentValues updateValues = new ContentValues();
            updateValues.put("USERNAME", userName);
            updateValues.put("PASSWORD", password);
            updateValues.put("POINTS", 0);

            String where = "USERNAME=?";
            db.update("USERS", updateValues, where, new String[]{userName});

        //String storedUsers = loginDataBaseAdapter.getSingleEntry(userName);

    }

    public void displayToast(String value){

         Toast.makeText(context, value, Toast.LENGTH_LONG).show();
    }

}

Anyone could help? 有人可以帮忙吗?

You may have changed the DB schema without increasing DATABASE_VERSION and thus the new app is finding the old DB. 您可能在不增加DATABASE_VERSION的情况下更改了数据库架构,因此新应用正在查找旧数据库。

static final int DATABASE_VERSION=2;

should fix it. 应该修复它。

尝试在设备上卸载应用程序,然后重新运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 当我的android应用程序在android设备/模拟器上运行时Jsoup无法正常工作 - Jsoup is not working when my android application is running on android device/emulator Android:开发的应用程序在模拟器中工作但未安装在我的设备中 - Android: developed application works in emulator but not getting installed in my device 我的Android应用程序在Eclipse模拟器中运行,但未在我的设备上运行 - My android app runs in eclipse emulator but doesn't run on my device 我的应用程序正在我的Android模拟器上工作,但它不能在我的真实移动设备上工作 - My app is working on my android emulator however it is not working on my real mobile device Android套接字应用程序在模拟器上运行但不在设备上运行 - Android socket application running on emulator but not working on device Android数据库应用程序在模拟器上运行良好,但在设备上显示错误 - Android database application runs fine on emulator but gives an error on the device Android:应用程序在模拟器上运行,但在我的手机上崩溃 - Android: App runs on emulator but it crashes on my mobile phone [linphone-android]正在使用所有模拟器,但停止了在我的真实设备上工作4.4.2 - [linphone-android]working all emulator but stopped working my real device 4.4.2 如何将文件从一个Android模拟器传输到我的Android设备? - How to transfer a file from one android emulator to my Android device? 为什么我的 android 工作室模拟器不工作? - Why my android studio emulator is not working?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM