当我尝试在 Android SQLite 数据库中添加新值时,我的应用程序退出 [重复]
Posted
技术标签:
【中文标题】当我尝试在 Android SQLite 数据库中添加新值时,我的应用程序退出 [重复]【英文标题】:My application exit when I try to add new values in an Android SQLite database [duplicate] 【发布时间】:2015-11-15 12:34:53 【问题描述】:我想创建一个像记事本这样的应用程序,但是有一个我看不到的问题。当我单击“确定”按钮时,应用程序关闭。有我的代码:
MainActivity.java:
package com.example.administrateur.notepad;
import android.view.MenuInflater;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity
DatabaseHelper myDb;
private EditText titre,texte;
private Button ajoutNote;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDb = new DatabaseHelper(this);
titre = (EditText)findViewById(R.id.titre);
texte = (EditText)findViewById(R.id.texte);
ajoutNote = (Button)findViewById(R.id.ajoutNote);
addData();
public void addData()
ajoutNote.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
boolean isInserted = myDb.insertData(titre.getText().toString(), texte.getText().toString());
if (isInserted)
Toast.makeText(MainActivity.this, "Data inserted", Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "Data not inserted", Toast.LENGTH_LONG).show();
);
@Override
public boolean onCreateOptionsMenu(Menu menu)
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
@Override
public boolean onOptionsItemSelected(MenuItem item)
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings)
return true;
return super.onOptionsItemSelected(item);
DatabaseHelper.java:
package com.example.administrateur.notepad;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper
public static final String DATABASE_NAME = "notepad.db";
public static final String TABLE_NAME = "notepad_table";
public static final String COL_1 = "ID";
public static final String COL_2 = "TITRE";
public static final String COL_3 = "TEXTE";
public DatabaseHelper(Context context)
super(context, DATABASE_NAME, null, 1);
@Override
public void onCreate(SQLiteDatabase db)
db.execSQL("create table" + TABLE_NAME + "(ID INTERGER PRIMARY KEY AUTOINCREMENT, TITRE TEXT, TEXTE TEXT)");
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
onCreate(db);
public boolean insertData(String titre, String texte)
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, titre);
contentValues.put(COL_3, texte);
long result = db.insert(TABLE_NAME,null, contentValues);
if (result == -1)
return false;
else
return true;
activity_main.xml:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_
android:layout_>
<EditText
android:id="@+id/titre"
android:hint="@string/titre"
android:textSize="20sp"
android:layout_
android:layout_ />
<EditText
android:id="@+id/texte"
android:hint="@string/note"
android:textSize="20sp"
android:layout_
android:layout_ />
<Button
android:layout_
android:layout_
android:text="@string/ajoutNote"
android:id="@+id/ajoutNote"/>
感谢您的阅读;)
【问题讨论】:
你的 logcat 告诉你什么......?首先,您的create table
语句需要在create table
和TABLE_NAME
之间留一个空格。
"create table"
和 "DROP TABLE IF EXISTS"
非常需要一个空格 在表名前...
什么都没有,没有出现错误
嗯,LogCat(那是什么鬼东西?!)应该告诉你the table doesn't exist
。
我尝试使用空格,但这不起作用。
【参考方案1】:
我刚刚发现我的错误,很抱歉添加了包含此类错误的帖子。在 DatabaseHelper.java 我写了“ID INTERGER PRIMARY KEY AUTOINCREMENT”而不是“ID INTEGER PRIMARY KEY AUTOINCREMENT”... 谢谢;)
【讨论】:
以上是关于当我尝试在 Android SQLite 数据库中添加新值时,我的应用程序退出 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Qt 在 Android 中读取现有的 SQLite 数据库?
如何在Unity中使用由android studio制作的SQLite数据库?
如何使用 android 中的 SQLite 扩展类在数据库中插入值?