0

私は Android で Sqlite データベースの非常に単純なデモ アプリケーションを作成しました。アクティビティには EditText とボタンと textxView が含まれているため、ハンドラ クラスを作成し、mainActivity の Java コードも実装しましたが、機能していません。以下のリンクから: http://stdioe.blogspot.in/2012/03/how-to-connect-sqlite-database-in.html

しかし、myActivity.java ファイルの「private DB names;」の行にエラーが表示されます....助けてください...それは何ですか?

私のコードは以下の通りです:

**main.xml**

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="68dp"
        android:layout_marginTop="48dp"
        android:ems="10"
        android:inputType="textPersonName" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="43dp"
        android:text="Button" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button1"
        android:layout_centerVertical="true"
        android:text=""
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

DBcontroller.java

package com.example.dbbb;

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

public class DBcontroller extends SQLiteOpenHelper {
public static final String MY_DATABASE ="name";
public static final int VERSION =1;
    public DBcontroller(Context context) {
        super(context, MY_DATABASE, null, VERSION);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void onCreate(SQLiteDatabase db) {

        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE mynames(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT);");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        db.execSQL("DROP TABLE IF EXISTS mynames");
        onCreate(db);

    }

}

main.java

package com.example.dbbb;

import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends ListActivity {
EditText et;
Button b;
private DB names;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et=(EditText)findViewById(R.id.editText1);
        b=(Button)findViewById(R.id.button1);
        names = new DB(this);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                 try{
                     AddDATA(name.getText().toString());
                     Cursor cursor = ShowDATA();
                     ShowDATA(cursor);
                     }
                     finally{
                     names.close();
                    }
            }
        });

    }

     private void AddDATA(String ResultName){

            SQLiteDatabase db = names.getWritableDatabase();
            ContentValues datas = new ContentValues();
            datas.put("name", ResultName);
            db.insertOrThrow("ournames", null, datas);
            }

            private String[] SELECT = {"id", "name"};

            private Cursor ShowDATA(){
            SQLiteDatabase db = names.getReadableDatabase();
            Cursor cursor = db.query("ournames", SELECT, null, null, null, null, null);

            startManagingCursor(cursor);
            return cursor;
            }

            private void ShowDATA(Cursor cursor){
                StringBuilder builder = new StringBuilder("RESULTS!:\n");

                while(cursor.moveToNext()){

                String whatthenameis = cursor.getString((cursor.getColumnIndex("name")));
                builder.append(whatthenameis).append("\n");
                }

                TextView text = (TextView)findViewById(R.id.textView1);
                text.setText(builder);
            }

}
4

3 に答える 3

3

しかし、myActivity.java ファイルの「private DB names;」の行にエラーが表示されます....助けてください...それは何ですか?

あなたはこの行を参照しています:

private DB names;

DBクラスを にインポートしておらず、MainActivity使用しようとしています。Eclipse はオブジェクトのクラスを解決できないため、その行にエラーが表示されます。

Source -> Organize Imports適切なクラスのインポートを試みることができます。

編集

SQLiteOpenHelperブログを見ると、 when they useの実装について言及しているように見えますが、DBこれを書いた人はコンパイルしようとしなかったようです。コードを次のように変更DBDBcontrollerます。

ここ:

private DBcontroller names;

そしてここ:

names = new DBcontroller(this);
于 2013-05-09T14:19:13.820 に答える
0

表示されたコードに基づくと、DB というクラスはありません。私が知る限り、Android によって提供される DB と呼ばれる既存のクラスは存在しないため、存在しません (非表示にしない限り)。

これは基本的に、DB を DBController に置き換える必要があることを意味するだけであり、そのエラーは表示されなくなります。適切なインポートも提供しています。

編集

コードでの解決策については、Steven Byle の回答を参照してください。

DB がエラーを出す理由について 2 セントを提供したかっただけです。

于 2013-05-09T15:21:37.920 に答える
0

dbは文字列型であってはなりません。dbは、 SqliteOpenHelperを拡張したデータベース オブジェクトである必要があります。

Database db=new Database(getApplicationContext());

また

Database db=new Database(class.this);
于 2013-08-27T06:36:31.483 に答える