SQLiteデータベースを読むことができません[DUPLICATE] -- android フィールド と sqlite フィールド 関連 問題

Can not read SQLite database [duplicate]












0
vote

問題

日本語

お願いします! ボタンを押すと、常にパラメータ0が送信されます。

minualactivity.class

<事前> <コード> dojo.connect1

データベース

<事前> <コード> dojo.connect2

私は何をしていますか? WebViewで開くためのリンクを入手する必要があります。

エラー: "NULLオブジェクトリファレンスに"

私はあらゆる助けに非常に感謝します!

事前にありがとうございました!

英語

Please, help! By pressing the button, parameter 0 is always transmitted.

MainActivity.class

this.listResult.setOnItemClickListener(new AdapterView.OnItemClickListener() {         @Override         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {             dbResult.read(RssActivity.this);             RssData rssData = dbResult.select(id);             Toast.makeText(getBaseContext(), valueOf(id), Toast.LENGTH_SHORT).show(); 

DataBase

public class DBResult { ... SQLiteDatabase database;  public DBResult(Context context){     DBResult.ResultOpenHelper openHelper = new DBResult.ResultOpenHelper(context);     database = openHelper.getWritableDatabase(); } public long insert(RssData rssData) {     ContentValues cv = new ContentValues();     cv.put(RSS_NAME, rssData.getRssName());     cv.put(RSS_TITLE, rssData.getTitle());     cv.put(RSS_LINK, rssData.getLink());     cv.put(RSS_DESCRIPTION, rssData.getDescription());     return database.insert(TABLE_NAME, null, cv); } public int update(RssData rssData){     ... } public RssData select(long id){     Cursor cursor = database.query(TABLE_NAME,null, RSS_ID + " = ?", new String[]{String.valueOf(id)}, null, null, RSS_ID);     if (cursor.moveToFirst()){     String rssName = cursor.getString(NUM_RSS_NAME);     String title = cursor.getString(NUM_RSS_TITLE);     String link = cursor.getString(NUM_RSS_LINK);     String description = cursor.getString(NUM_RSS_DESCRIPTION);     new RssData (id, rssName, title, link, description);}     while (cursor.moveToNext());     return null; } ... private class ResultOpenHelper extends SQLiteOpenHelper {     public ResultOpenHelper(Context context) {         super(context, DATABASE_NAME, null, DATABASE_VERSION);     }     @Override     public void onCreate(SQLiteDatabase db) {         database=db;         String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" +                 RSS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +                 RSS_NAME + " TEXT, " +                 RSS_TITLE + " TEXT, " +                 RSS_DESCRIPTION + " TEXT, " +                 RSS_LINK + " TEXT ); ";         db.execSQL(sql);     }     ... } 

What am I doing wrong? I need to get a link to open it in WebView.

ERROR: "on a null object reference"

I will be very grateful for any help!

Thank you in advance!

</div
     

回答リスト

0
 
vote
vote
ベストアンサー
 

次は常に null を返します。

<事前> <コード> public RssData select(long id){ Cursor cursor = database.query(TABLE_NAME,null, RSS_ID + " = ?", new String[]{String.valueOf(id)}, null, null, RSS_ID); if (cursor.moveToFirst()){ String rssName = cursor.getString(NUM_RSS_NAME); String title = cursor.getString(NUM_RSS_TITLE); String link = cursor.getString(NUM_RSS_LINK); String description = cursor.getString(NUM_RSS_DESCRIPTION); new RssData (id, rssName, title, link, description);} while (cursor.moveToNext()); return null; }

使用: -

<事前> <コード> public RssData select(long id){ Rssdata rv; Cursor cursor = database.query(TABLE_NAME, null, RSS_ID + " = ?", new String[]{String.valueOf(id)}, null, null, RSS_ID ); if (cursor.moveToFirst()){ String rssName = cursor.getString(NUM_RSS_NAME); String title = cursor.getString(NUM_RSS_TITLE); String link = cursor.getString(NUM_RSS_LINK); String description = cursor.getString(NUM_RSS_DESCRIPTION); } cursor.close(); //<<<< Should always close Cursors when done with them. return rv; }

しかし、行が見つからない場合は、それでもnullを返しますので、それに応じてnullが返されるようにコードする必要があります。 : -

<事前> <コード> this.listResult.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { dbResult.read(RssActivity.this); RssData rssData = dbResult.select(id); if (rssData == null) { Toast.maketext(getBaseContext(),"Ooops!!! no such row in DB",Toast.LENGTH_SHORT).show(); return; } Toast.makeText(getBaseContext(), valueOf(id), Toast.LENGTH_SHORT).show();

上記では、アダプタは、 ID をonItemClickメソッドに正しく渡すカーソルアダプタまたはカスタムアダプタであると仮定しています。アダプタがそのようなアダプタではない場合、 id はそれぞれの行の ID ではなく、選択されたアイテムの位置になるでしょう。

 

The following will always return null.

public RssData select(long id){     Cursor cursor = database.query(TABLE_NAME,null, RSS_ID + " = ?", new String[]{String.valueOf(id)}, null, null, RSS_ID);     if (cursor.moveToFirst()){     String rssName = cursor.getString(NUM_RSS_NAME);     String title = cursor.getString(NUM_RSS_TITLE);     String link = cursor.getString(NUM_RSS_LINK);     String description = cursor.getString(NUM_RSS_DESCRIPTION);     new RssData (id, rssName, title, link, description);}     while (cursor.moveToNext());     return null; } 

Use :-

public RssData select(long id){     Rssdata rv;     Cursor cursor = database.query(TABLE_NAME,         null,          RSS_ID + " = ?",          new String[]{String.valueOf(id)},          null, null, RSS_ID     );     if (cursor.moveToFirst()){         String rssName = cursor.getString(NUM_RSS_NAME);         String title = cursor.getString(NUM_RSS_TITLE);         String link = cursor.getString(NUM_RSS_LINK);         String description = cursor.getString(NUM_RSS_DESCRIPTION);     }     cursor.close(); //<<<< Should always close Cursors when done with them.     return rv; } 

However, if no row is found then it will still return null, so you should code accordingly for null being returned e.g. :-

    this.listResult.setOnItemClickListener(new AdapterView.OnItemClickListener() {         @Override         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {             dbResult.read(RssActivity.this);             RssData rssData = dbResult.select(id);             if (rssData == null) {                 Toast.maketext(getBaseContext(),"Ooops!!! no such row in DB",Toast.LENGTH_SHORT).show();                 return;             }             Toast.makeText(getBaseContext(), valueOf(id), Toast.LENGTH_SHORT).show(); 

NOTE

The above assumes that the Adapter is a CursorAdapter or a Custom Adapter that correctly passes id to the onItemClick method. If the Adapter is not such an Adapter then id will likely not be the id of the respective row rather it will be the position of the selected item.

</div
 
 
 
 

関連する質問

0  タブを開くときとデータベースが空の場合にSQLiteのエラー  ( Sqlite error when opening a tab and when the database is empty android ) 
私は4つのタブがあり、最初の2つのタブがデータベース上にデータを挿入し、他の2つのタブはカーソルを使用してデータを表示するようになります。私が最初にアプリを起動し、2つのタブのいずれかを押すと何もこのエラーを与えると、このエラーが発生した場合、私の問題は私の問...

40  XSDデータ・セットに基づいてSQLiteデータベースを作成する  ( Create a sqlite database based on an xsd data set ) 
xsd DataSet6 に基づいてSQLiteデータベースを作成する方法があるかどうかを知っていますか?過去には、基本的なSQLiteマネージャを使用しましたが、可能な限り<コード> .NET 開発で物事をもう少し融合させたいです。 ...

35  エクストリームシャーディング:1ユーザーあたりの1つのSQLiteデータベース  ( Extreme sharding one sqlite database per user ) 
電子メールサービスとソーシャルネットワークの間のどこかのWebアプリケーションに取り組んでいます。私はそれが将来本当に大きく成長する可能性があると感じます、それで私はスケーラビリティについて心配しています。 1つの集中型MySQL / InnoDBデータベー...

2  Javaコードを使用してデータベース(SQLite)にピクチャを挿入します。私は何をすべきか?  ( Insert a picture into databasesqlite with java code what should i do ) 
SQLiteデータベースでは、フィールド型BLOBを設定します。 それから、私はJavaコードを書きました: <事前> <コード> PreparedStatement preStmt = con.prepareStatement("INSERT INTO z...

0  SQLiteエラーそのような列はありません  ( Sqlite error no such column ) 
ここでは誰もがこのエラーで何らかの体験をしていますか? WHERE句を使用する場合にのみ、このエラーが発生します。 私は結果を得るためにPHP PDOを使用します。 そしてこれは私のシンプルなテーブルです <事前> <コード> $sql = "CREATE ...

87  Android SQLiteデータベースにテーブルが存在するかどうかを確認しますか?  ( How does one check if a table exists in an android sqlite database ) 
私はデータベースにすでにレコードがあるかどうかを確認する必要があるAndroidアプリを持っています。そうでなければ、最終的にそれを挿入し、データが存在する場合はデータベースからデータを読み取るだけです。 SQLiteOpenHelperのサブクラスを使用して...

0  データベースを開くことができませんでした  ( Couldnt open database ) 
C#アプリケーションをC:¥Program Files¥App Folderにあります SQLLITEデータベースを使用しています 私のコードはWindows管理ユーザーを介してログ記録中に完全に機能しています。ウィンドウユーザーアカウントを変更すると、デ...

10  すぐに複数のSQLiteデータベースを使用してください  ( Using multiple sqlite databases at once ) 
私は2つのSQLiteデータベースを持っています.1つはサーバーからダウンロードしました( server.db )、クライアント上のストレージとして使用されます(<コード> client.db )。サーバーデータベースからのデータを使用して、クライアントデータ...

9  iPhoneで最高のSQLiteの実践[閉じた]  ( Best sqlite practices on the iphone ) 
現在立つにつれて、この質問は私たちのQ&AMPにとって良いフィットではありません。フォーマット。私たちは事実、参考文献、または専門知識によって支持されることを期待していますが、この質問は...

0  FlexとSQLiteのクエリの問題はほとんど問題ありませんか?  ( Little problem with flex and sqlite query ) 
小さな問題についてのすぐ問題私はフレックスアプリを持っている私が作成しているフレックスアプリを持っています。 ローカルデータベースを使用してアプリを作成することを結ぶと、私のクエリにエラーが発生しています。 <事前> <コード> pr...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有