gpt4 book ai didi

java - 如何在android中使用sqlite在数据库中插入值?

转载 作者:IT王子 更新时间:2023-10-29 06:25:15 25 4
gpt4 key购买 nike

你能告诉我如何在数据库中插入值吗?我刚开始在 android 上开发,没有太多经验。

我只创建了一个类 information,我在其中创建了名称字段的 getter 和 setter。包 com.example.database_example;

package com.example.database_example;

public class Information {

String name;
public Information(String name) {
// TODO Auto-generated constructor stub
this.name=name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

}

现在我创建了另一个数据库类,我想在其中添加插入方法并从数据库中读取数据。

package com.example.database_example;

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

public class DataBaseExample extends SQLiteOpenHelper{

private static final int DATABASE_VERSION = 1;

// Database Name
private static final String DATABASE_NAME = "information";

// Contacts table name
private static final String TABLE_Name= "Name";

// Contacts Table Columns names
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";

public DataBaseExample(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String createTable= "CREATE TABLE " + TABLE_Name+"("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT,"
+ ")";
db.execSQL(createTable);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + TABLE_Name);

// Create tables again
onCreate(db);
}

public boolean insertname(Information information) {

boolean createSuccessful = false;

ContentValues values = new ContentValues();

// values.put(KEY_ID, information.getId());
values.put(KEY_NAME, information.getName());

SQLiteDatabase db = this.getWritableDatabase();

createSuccessful = db.insert(TABLE_Name, null, values) > 0;
db.close();

return createSuccessful;
}

}

主文件

package com.example.database_example;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Information inf=new Information("naveen");
DataBaseExample dbx=new DataBaseExample(MainActivity.this);
dbx.insertname(inf);
}

LogCat

09-24 07:25:07.138: I/Database(392): sqlite returned: error code = 1, msg = near ")": syntax error
09-24 07:25:07.138: E/Database(392): Failure 1 (near ")": syntax error) on 0x2a7080 when preparing 'CREATE TABLE Name(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,)'.
09-24 07:25:07.148: D/AndroidRuntime(392): Shutting down VM
09-24 07:25:07.148: W/dalvikvm(392): threadid=1: thread exiting with uncaught exception (group=0x40015560)
09-24 07:25:07.158: E/AndroidRuntime(392): FATAL EXCEPTION: main
09-24 07:25:07.158: E/AndroidRuntime(392): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.database_example/com.example.database_example.MainActivity}: android.database.sqlite.SQLiteException: near ")": syntax error: CREATE TABLE Name(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.os.Handler.dispatchMessage(Handler.java:99)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.os.Looper.loop(Looper.java:123)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.ActivityThread.main(ActivityThread.java:3683)
09-24 07:25:07.158: E/AndroidRuntime(392): at java.lang.reflect.Method.invokeNative(Native Method)
09-24 07:25:07.158: E/AndroidRuntime(392): at java.lang.reflect.Method.invoke(Method.java:507)
09-24 07:25:07.158: E/AndroidRuntime(392): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-24 07:25:07.158: E/AndroidRuntime(392): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-24 07:25:07.158: E/AndroidRuntime(392): at dalvik.system.NativeStart.main(Native Method)
09-24 07:25:07.158: E/AndroidRuntime(392): Caused by: android.database.sqlite.SQLiteException: near ")": syntax error: CREATE TABLE Name(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1763)
09-24 07:25:07.158: E/AndroidRuntime(392): at com.example.database_example.DataBaseExample.onCreate(DataBaseExample.java:34)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:126)
09-24 07:25:07.158: E/AndroidRuntime(392): at com.example.database_example.DataBaseExample.insertname(DataBaseExample.java:55)
09-24 07:25:07.158: E/AndroidRuntime(392): at com.example.database_example.MainActivity.onCreate(MainActivity.java:18)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-24 07:25:07.158: E/AndroidRuntime(392): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
09-24 07:25:07.158: E/AndroidRuntime(392): ... 11 more**

最佳答案

您的 android sqlite 插入方法可能如下所示:

public boolean create(Information information) {

boolean createSuccessful = false;

ContentValues values = new ContentValues();

values.put(KEY_NAME, information.getName());

SQLiteDatabase db = this.getWritableDatabase();

createSuccessful = db.insert(tableName, null, values) > 0;
db.close();

return createSuccessful;
}

它可以添加到您的 DataBaseExample 类中。

您可以在 Activity 中或任何可能的地方以这种方式使用它。

Information information = new Information(); 
information.setName("naveen");

if(new DataBaseExample().create(information)){
Log.v(TAG, "save ok.");
}else{
Log.v(TAG, "save failed.");
}

See here更简单的例子。

关于java - 如何在android中使用sqlite在数据库中插入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971434/

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