Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
调用我的方法的Java代码,该方法为Android应用程序的SQLite数据库添加信息_Android_Sqlite_Methods - Fatal编程技术网

调用我的方法的Java代码,该方法为Android应用程序的SQLite数据库添加信息

调用我的方法的Java代码,该方法为Android应用程序的SQLite数据库添加信息,android,sqlite,methods,Android,Sqlite,Methods,我在屏幕上有两个文本字段和一个按钮。按下按钮时,我希望名称文本字段中的信息传递给变量,然后在我的DatabaseHelper.class中运行我的addAccount方法,将变量传递给此方法,这应该将变量信息存储在SQLite数据库中 这里是我的活动与文本字段和按钮 package mr.mwod.moneyorganiser; import android.app.Activity; import android.os.Bundle; import andro

我在屏幕上有两个文本字段和一个按钮。按下按钮时,我希望名称文本字段中的信息传递给变量,然后在我的DatabaseHelper.class中运行我的addAccount方法,将变量传递给此方法,这应该将变量信息存储在SQLite数据库中

这里是我的活动与文本字段和按钮

    package mr.mwod.moneyorganiser;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;

public class AddAccountActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       
        setContentView(R.layout.addaccountlayout);

        Button addAccountVairiable = (Button) findViewById(R.id.addAccountButton);
        addAccountVairiable.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                EditText accountNameData = (EditText)findViewById(R.id.accountNameTextField);
                String accountNameVairiable = accountNameData.getText().toString();
                //Need the code here to run addAccount form DatabaseHelper.class
                //accountName vairiable needs to be passed into the method as the information to store.
            }
        });
    }
}
我已经评论了我认为代码需要去哪里以及它需要做什么

这是我的DatabaseHelper.class封装,它们的错误在那里

package mr.mwod.moneyorganiser;

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

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "money_organiser";
    private static final String TABLE_ACCOUNTS = "accounts";
    private static final String KEY_ID = "id";
    private static final String KEY_NAME = "account_name";
    private static final String KEY_ACCOUNT_BALANCE = "account_balance";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_ACCOUNTS + "("
                + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
                + KEY_ACCOUNT_BALANCE + " INTEGER" + ")";
        db.execSQL(CREATE_CONTACTS_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_ACCOUNTS);
        // Create tables again
        onCreate(db);
    }

    public void addAccount(String name) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(KEY_NAME, name);

        db.insert(TABLE_ACCOUNTS, null, values);
        db.close();
    }
}

任何帮助都将不胜感激。

你的问题有什么诀窍吗?不仅仅是调用新的数据库助手this.addAccountNameVairiable;工作当然,重用变量是有意义的,而不是每次都分配它,但我几乎可以肯定这不是您的问题

顺便说一下,我建议您更改表的主键列的名称。使用_id,一些android助手方法将以这种方式更容易使用

编辑:我刚刚注意到这个调用发生在匿名类中。正如您所注意到的,这将触发编译错误,因为侦听器不是上下文。活动正在进行中。幸运的是,通过使用父活动(即上下文)放置用于ocnstruction的类,可以很容易地解决这个问题

new DatabaseHelper(AddAccountActivity.this).addAccount(accountNameVairiable);

看起来您缺少的只是在突出显示的行中调用DatabaseHelper.addAccount

这不管用吗?如果您遇到错误,请告诉我们问题是什么


如果您想知道如何访问DatabaseHelper,那么您可以将其设置为单例,并在需要时引用其实例。

我一开始就尝试了这个方法,但一开始就忘记了“new”,就像个白痴一样。但是现在我在突出显示“new DatabaseHelper”时遇到一个错误。我联机获取了数据库帮助程序代码,错误是:-构造函数DatabaseHelpernew视图。OnClickListner{}未定义。我猜我的助手类现在是问题所在。这也是很容易解决的问题。请考虑我的答案,将在2分钟内出现的编辑。