Java 如何在android中使用sqlite在数据库中插入值?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18971434/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to insert value in data base using sqlite in android?
提问by
Can you please tell me how to insert value in database. I just started development in android don't have much experience.
你能告诉我如何在数据库中插入值吗?我刚开始在android中开发并没有太多经验。
I just create one class information
where I create getter and setter of name field.
package com.example.database_example;
我只是创建一个类information
,在其中创建 name 字段的 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;
}
}
Now I create an another data base class where I want to add method of insert and read the data from data base.
现在我创建了另一个数据基类,我想在其中添加插入方法并从数据库中读取数据。
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;
}
}
Main File
Main File
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
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.access00(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**
回答by Emkey
Your android sqlite insert method could look like this:
您的 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;
}
It can be added in your DataBaseExample
class.
它可以添加到您的DataBaseExample
班级中。
You can use it this way in your activity, or anywhere possible.
您可以在您的活动中或任何可能的地方以这种方式使用它。
Information information = new Information();
information.setName("naveen");
if(new DataBaseExample().create(information)){
Log.v(TAG, "save ok.");
}else{
Log.v(TAG, "save failed.");
}
See herefor more simple examples.
回答by Dhina k
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("Messsage", msg);
values.put("Name", SenderName);
values.put("GroupName", Groupname);
db.insert("TableName", null, values);
For more details click here http://androiddhina.blogspot.in/2015/04/insert-value-in-database-using-sqlite.html
有关更多详细信息,请单击此处http://androiddhina.blogspot.in/2015/04/insert-value-in-database-using-sqlite.html
回答by Elham Kohestani
The first error is because of the extra comma you have put inside the createTable
string after the last column definition KEY_NAME+" TEXT,"
第一个错误是因为您createTable
在最后一列定义之后在字符串中放置了额外的逗号KEY_NAME+" TEXT,"
String createTable= "CREATE TABLE " + TABLE_Name+"("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT,"
+ ")";
the correct form is as follow :
正确的形式如下:
String createTable= "CREATE TABLE " + TABLE_Name+"("
+ KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_NAME + " TEXT"
+ ")";
回答by jojo
package com.example.hostelmangement;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DataBase {
DataBaseHelper database;
int a=0;
public DataBase(Context con)
{
database=new DataBaseHelper(con,"jojo", null,1);
}
void insertData(String joindate, String name, String fathername, String dateofbirth, String housename, String houseplace, String housepin, String blood, String mobile, String email, String company, String companyplace, String companyphone, String companypin, String rent, String imgphoto, String imgproof)
{
SQLiteDatabase sqld=database.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("join_date", joindate);
cv.put("name", name);
cv.put("father_name", fathername);
cv.put("date_of_birth", dateofbirth);
cv.put("house_name", housename);
cv.put("place", houseplace);
cv.put("pin_no", housepin);
cv.put("blood_group", blood);
cv.put("mobile", mobile);
cv.put("email", email);
cv.put("company", company);
cv.put("company_place", companyplace);
cv.put("company_phone", companyphone);
cv.put("company_pin", companypin);
cv.put("rent", rent);
cv.put("pending",a+"");
cv.put("status", "a");
cv.put("photo",imgphoto);
cv.put("proof",imgproof);
sqld.insert("demo", null,cv);
}
public List<User> getDetails()
{
List<User> ar=new ArrayList<User>();
SQLiteDatabase sqldg=database.getReadableDatabase();
Cursor cur=sqldg.rawQuery("select * from demo where status='a' order by name asc" , null);
if(cur!=null)
{
if(cur.moveToFirst())
{
do
{
User user=new User();
user.setId(cur.getInt(0));
user.setJoindate(cur.getString(1));
user.setName(cur.getString(2));
user.setFathername(cur.getString(3));
user.setDateofbirth(cur.getString(4));
user.setHousename(cur.getString(5));
user.setPlace(cur.getString(6));
user.setPinno(cur.getString(7));
user.setBloodgroup(cur.getString(8));
user.setMobile(cur.getString(9));
user.setEmail(cur.getString(10));
user.setCompany(cur.getString(11));
user.setCompanyplace(cur.getString(12));
user.setCompanyphone(cur.getString(13));
user.setCompanypin(cur.getString(14));
user.setRent(cur.getString(15));
user.setPhoto(cur.getString(18));
user.setProof(cur.getString(19));
ar.add(user);
}
while(cur.moveToNext());
}
}
return ar;
}
public List<User> getDetailsforview(int memberid)
{
List<User> ar=new ArrayList<User>();
SQLiteDatabase sqldg=database.getReadableDatabase();
Cursor cur=sqldg.rawQuery("select * from demo where id="+memberid , null);
if(cur!=null)
{
if(cur.moveToFirst())
{
do
{
User user=new User();
user.setId(cur.getInt(0));
user.setJoindate(cur.getString(1));
user.setName(cur.getString(2));
user.setFathername(cur.getString(3));
user.setDateofbirth(cur.getString(4));
user.setHousename(cur.getString(5));
user.setPlace(cur.getString(6));
user.setPinno(cur.getString(7));
user.setBloodgroup(cur.getString(8));
user.setMobile(cur.getString(9));
user.setEmail(cur.getString(10));
user.setCompany(cur.getString(11));
user.setCompanyplace(cur.getString(12));
user.setCompanyphone(cur.getString(13));
user.setCompanypin(cur.getString(14));
user.setRent(cur.getString(15));
user.setPhoto(cur.getString(18));
user.setProof(cur.getString(19));
ar.add(user);
}
while(cur.moveToNext());
}
}
return ar;
}
public List<User> getDateSort()
{
List<User> ar=new ArrayList<User>();
SQLiteDatabase sqldg=database.getReadableDatabase();
//Cursor cur=sqldg.rawQuery("select * from demo order by join_date asc", null);
Cursor cur=sqldg.rawQuery("select * from demo where status='a' order by name asc", null);
if(cur!=null)
{
if(cur.moveToFirst())
{
do
{
User user=new User();
user.setId(cur.getInt(0));
String date=cur.getString(1);
String date1=date.substring(8, 10);
user.setJoindate(date1);
user.setName(cur.getString(2));
user.setFathername(cur.getString(3));
user.setDateofbirth(cur.getString(4));
user.setHousename(cur.getString(5));
user.setPlace(cur.getString(6));
user.setPinno(cur.getString(7));
user.setBloodgroup(cur.getString(8));
user.setMobile(cur.getString(9));
user.setEmail(cur.getString(10));
user.setCompany(cur.getString(11));
user.setCompanyplace(cur.getString(12));
user.setCompanyphone(cur.getString(13));
user.setCompanypin(cur.getString(14));
user.setRent(cur.getString(15));
user.setPending(cur.getInt(16));
user.setPhoto(cur.getString(18));
user.setProof(cur.getString(19));
ar.add(user);
}
while(cur.moveToNext());
}
}
return ar;
}
public List<User> deactiveMembers() {
List<User> ar=new ArrayList<User>();
SQLiteDatabase sqldg=database.getReadableDatabase();
Cursor cur=sqldg.rawQuery("select * from demo where status='d' order by name asc", null);
if(cur!=null)
{
if(cur.moveToFirst())
{
do
{
User user=new User();
user.setId(cur.getInt(0));
user.setJoindate(cur.getString(1));
user.setName(cur.getString(2));
user.setFathername(cur.getString(3));
user.setDateofbirth(cur.getString(4));
user.setHousename(cur.getString(5));
user.setPlace(cur.getString(6));
user.setPinno(cur.getString(7));
user.setBloodgroup(cur.getString(8));
user.setMobile(cur.getString(9));
user.setEmail(cur.getString(10));
user.setCompany(cur.getString(11));
user.setCompanyplace(cur.getString(12));
user.setCompanyphone(cur.getString(13));
user.setCompanypin(cur.getString(14));
user.setRent(cur.getString(15));
user.setPhoto(cur.getString(18));
user.setProof(cur.getString(19));
ar.add(user);
}
while(cur.moveToNext());
}
}
return ar;
}
public void Update(String joindate, String name, String fathername, String dateofbirth, String housename, String houseplace, String housepin, String blood, String mobile, String email, String company, String companyplace, String companyphone, String companypin, String rent, int id, String imgphoto, String imgproof)
{
SQLiteDatabase sqld=database.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("join_date", joindate);
cv.put("name", name);
cv.put("father_name", fathername);
cv.put("date_of_birth", dateofbirth);
cv.put("house_name", housename);
cv.put("place", houseplace);
cv.put("pin_no", housepin);
cv.put("blood_group", blood);
cv.put("mobile", mobile);
cv.put("email", email);
cv.put("company", company);
cv.put("company_place", companyplace);
cv.put("company_phone", companyphone);
cv.put("company_pin", companypin);
cv.put("rent", rent);
cv.put("photo", imgphoto);
cv.put("proof", imgproof);
sqld.update("demo",cv,"id="+id, null);
}
public void pendinUpdate(int pending, int lastamount)
{
SQLiteDatabase sqld=database.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("pending",lastamount);
sqld.update("demo",cv,"id="+pending, null);
}
public void deleteUpdate(int id)
{
SQLiteDatabase sqld=database.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("status","d");
sqld.update("demo",cv,"id="+id, null);
}
public void activate(int id)
{
SQLiteDatabase sqld=database.getWritableDatabase();
ContentValues cv=new ContentValues();
cv.put("status","a");
sqld.update("demo",cv,"id="+id, null);
}
}
}
回答by Durgesh
Use below code-
使用以下代码-
mSQLiteDatabase = getWritableDatabase(); //To insert we need to writable //database. If database is not created/opened it will do the job.
ContentValues contentValues = new ContentValues();
contentValues.put(key1,value1);
contentValues.put(key2,value2);
contentValues.put(key3,value3);
//...put the value for all the required colums of a row.....
long rowInserted = mSQLiteDatabase.insert(tablename,"",contentValues);
mSQLiteDatabase.close();//This is very important to close.Never forget this.
if(rowInserted != -1) {
//Insert success.
} else {
//Inser failed.
}