java - 在 WebView 中使用来自 sqlite 数据库的 URL

标签 java android sqlite

我正在尝试构建一个根据主要 Activity 传递的 Intent 数据从数据库中提取 url 的应用

我已经实现了代码,但应用程序一直崩溃/强制关闭。

这是我的 DBHelper 类

package com.snplabs.learncpp;

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

public class DBHelper extends SQLiteOpenHelper {

final protected static String DATABASE_NAME="cppreference";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null,2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion >= newVersion) return;
db.execSQL("DROP DATABASE IF EXISTS " + DATABASE_NAME +";");
onCreate(db);
}
@Override
public void onCreate(SQLiteDatabase db) {

//here is the database definition
db.execSQL("CREATE TABLE cppref " +
"(_id INTEGER PRIMARY KEY, link TEXT);");
//insert pre-configured records
db.execSQL("INSERT INTO cppref (_id, link) VALUES(1,'URL_HERE');");
db.execSQL("INSERT INTO cppref (_id, link) VALUES(2,'URL_HERE');");
db.execSQL("INSERT INTO cppref (_id, link) VALUES(3,'URL_HERE');");
db.execSQL("INSERT INTO cppref (_id, link) VALUES(4,'URL_HERE');");
db.execSQL("INSERT INTO cppref (_id, link) VALUES(5,'URL_HERE');");
  }


}

下面是使用 DBHelper 获取 url 的类:

package com.snplabs.learncpp;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

public class ViewItem extends Activity{
private DBHelper dbhelper=new DBHelper(this);
private SQLiteDatabase db;
private String pgurl;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.item_view);

    db = dbhelper.getReadableDatabase();

    TextView txtProduct = (TextView) findViewById(R.id.product_label);

    Intent i = getIntent();
    // getting attached intent data
    String product = i.getStringExtra("product");
    int data=Integer.parseInt(product.substring(4));
    // displaying selected product name

    txtProduct.setText(product);

    Cursor quer=db.rawQuery("SELECT link FROM cppref "+"WHERE _id='"+data+"';", null);
            //-fetch record
            if(quer.getCount()!=0){
            quer.moveToFirst();//go to first row
            pgurl=quer.getString(1).toString();
            }
            else{
            //display some notice here saying no data found
            txtProduct.setText("Error");
            }

    WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.loadUrl(pgurl);
}

最佳答案

首先更正这个移动这个

 DBHelper dbhelper=new DBHelper(this);

setContentView(.....) 之后的 onCreate(......)

关于java - 在 WebView 中使用来自 sqlite 数据库的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22652606/

相关文章:

java - 需要测试静态Utils类

android - 如何从 nmea 句子信息计算以米为单位的 gps 精度

java - 以预设的纵横比和宽度/高度裁剪图像并保存

android - 在线存储sqlite数据库

java - 防止并发访问 servlet 中的方法

java - Java 的 MessageFormat 是否可以接收堆栈跟踪?

java - 带有包含 if 语句的 While 循环的方法的大 O 表示法

java - Picasso Android 内存问题,当 fragment 被替换时

java - 如何在 Android 应用程序的单个数据库中创建两个表?

android - 如何使用数据库编写 Robolectric (2.3) 测试