gpt4 book ai didi

java - 如何在Android中创建SQLite数据库

转载 作者:行者123 更新时间:2023-12-01 09:58:46 25 4
gpt4 key购买 nike

我创建了Databasehelper.java类,在该类中,我调用了SQLite数据库类并实现了其所有方法,并且在主类中调用该类实例并运行该应用程序时,它显示“不幸的是,您的应用程序具有停止了”

这是代码

package com.example.android.viewpager1;

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

/**
* Created by Vikas on 5/1/2016.
*/
public class Databasehelper extends SQLiteOpenHelper
{
public static final String DATABASE_NAME="Answers.db";
public static final String TABLE_NAME="answers_table";
public static final String COL_1="QUESTION_NO";
public static final String COL_2="QUESTION_ANS";



public Databasehelper(Context context)
{
super(context,DATABASE_NAME,null,1);
SQLiteDatabase db= this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL("create table" + TABLE_NAME+"(QUESTION_NO INTEGER PRIMARY KEY AUTOINCREMENT,QUESTION_ANS VARCHAR);");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS"+TABLE_NAME);
onCreate(db);
}
}


这是mainactivity.java

package com.example.android.viewpager1;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.RadioButton;

import java.util.List;
import java.util.Vector;

public class MainActivity extends FragmentActivity
{
Databasehelper mydb;

private PagerAdapter mPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewpager_layout);
initialisePaging();
mydb=new Databasehelper(this);//here I am making DB

}


在这里,我正在制作数据库,但是它没有运行,并且我也知道在主线程或UI线程上,我们不应该创建数据库或网络对象,而应该使用AsynTask类,但是任何人都可以告诉他们如何使用它或任何其他解决方案
的logcat是

05-02 01:34:29.710 32328-32328 / com.example.android.viewpager1 E / AndroidRuntime:FATAL EXCEPTION:main
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.android.viewpager1 / com.example.android.viewpager1.MainActivity}:android.database.sqlite.SQLiteException:在“ TABLEanswers_table”附近:语法错误(代码1) :,而在编译时:CREATE TABLEanswers_table(QUESTION_NO INTEGER主键AUTOINCREMENT,QUESTION_ANS VARCHAR);
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2141)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2166)
在android.app.ActivityThread.access $ 700(ActivityThread.java:141)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1221)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:5019)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:807)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:574)
在dalvik.system.NativeStart.main(本机方法)
原因:android.database.sqlite.SQLiteException:在“ TABLEanswers_table”附近:语法错误(代码1):,在编译时:CREATE TABLEanswers_table(QUESTION_NO INTEGER PRIMARY KEY AUTOINCREMENT,QUESTION_ANS VARCHAR);
在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
在android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:882)
在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
在android.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58)
在android.database.sqlite.SQLiteStatement。(SQLiteStatement.java:31)
在android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1663)
在android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1594)
在com.example.android.viewpager1.Databasehelper.onCreate(Databasehelper.java:27)
在android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
在android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
在com.example.android.viewpager1.Databasehelper。(Databasehelper.java:22)
在com.example.android.viewpager1.MainActivity.onCreate(MainActivity.java:24)
在android.app.Activity.performCreate(Activity.java:5056)
在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2099)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2166)
在android.app.ActivityThread.access $ 700(ActivityThread.java:141)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1221)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:5019)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:807)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:574)
在dalvik.system.NativeStart.main(本机方法)

最佳答案

我会指出您的代码中存在一些语法问题,但修复它们并不能保证您的应用程序正常运行,您仍然需要阅读Logcat以获得更多信息:

1- db.execSQL("create table " + TABLE_NAME+" ("+ COL_1 +" INTEGER PRIMARY KEY AUTOINCREMENT, "+COL_2+" VARCHAR);");

(请注意,在“表”之后和“(”之前,以及使用列常量而不是硬编码字符串添加的空格)

2- db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);

(注意在EXISTS之后添加的空格)

关于java - 如何在Android中创建SQLite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36970896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com