Java ANDROID:应用程序在插入数据时没有响应
我对Android编程非常陌生,我很难插入数据。每当我提交表单时,应用程序强制关闭,提示错误“应用程序未响应” 我创建了一个名为Java ANDROID:应用程序在插入数据时没有响应,java,android,Java,Android,我对Android编程非常陌生,我很难插入数据。每当我提交表单时,应用程序强制关闭,提示错误“应用程序未响应” 我创建了一个名为DB\u Controller package com.techdepot_ph.maco.secretjournal; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.dat
DB\u Controller
package com.techdepot_ph.maco.secretjournal;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.text.Editable;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* Created by Maco on 18-Jan-17.
*/
public class DB_Controller extends SQLiteOpenHelper {
public DB_Controller(Context context) {
super(context, "app.db", null, 1);
}
//This creates the database
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INT, '" +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS STORIES");
onCreate(db);
}
//This inserts the Data in the Database
public void insert_story(String story_title, String story_body) {
ContentValues content = new ContentValues();
content.put("title", story_title);
content.put("body", story_body);
this.getWritableDatabase().insertOrThrow("STORIES", "", content);
}
在我的活动课上
package com.techdepot_ph.maco.secretjournal;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Switch;
import android.widget.Toast;
public class StoryCreate_Activity extends AppCompatActivity {
DB_Controller db;
EditText story_title, story_body;
//Switch is_private;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_story_create_);
story_title = (EditText) findViewById(R.id.story_title);
story_body = (EditText) findViewById(R.id.story_body);
//is_private = (Switch) findViewById(R.id.story_private);
}
public void btn_click(View view) {
db = new DB_Controller(this);
switch(view.getId()) {
case R.id.story_submit:
db.insert_story(story_title.getText().toString(), story_body.getText().toString());
Toast.makeText(StoryCreate_Activity.this, "Data Saved!", Toast.LENGTH_LONG).show();
break;
}
}
}
在我的布局中,我定义了按钮
R.id.story\u submit
来调用btn\u click()
onClick。下面是创建表查询中的问题
之前:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INT, '" +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INTEGER, " +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
更新至:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INT, '" +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INTEGER, " +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
下面是创建表查询中的问题 之前:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INT, '" +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INTEGER, " +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
更新至:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INT, '" +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INTEGER, " +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
更新:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INTEGER, " +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
更新:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE STORIES( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"uniq_id TEXT, " +
"title TEXT, " +
"body TEXT, " +
"is_private INTEGER, " +
"dev_id TEXT, " +
"user_id TEXT, " +
"date_time TEXT)");
}
我认为您应该在后台线程上调用向数据库插入数据,而不是在主线程上直接调用。您可以使用Thread、AsyncStack来实现这一点。我认为您应该在后台线程上调用向数据库插入数据,而不是在主线程上直接调用。您可以使用Thread、AsyncStack来实现这一点。您的应用程序代码可能存在许多不同的问题,您需要提交底部生成的错误日志,以了解ANR(应用程序无响应)错误的原因,如果应用程序在5秒内没有响应,Android将关闭您的应用程序 查看代码,只有2个字段需要插入数据库story_title、story_body,其余字段是多余的,除了_id是一个自动递增的键 通过浏览您的应用程序,我可以了解到以下几点:
- 对于SQLite,错误的数据类型使用了Integer而不是Int
- 错 语义是私有整数当我们使用is时,我们指的是布尔值 对/错
- 使其变小删除不使用的代码,只需坚持2个字段
此应用程序不运行后台任务,最好是在不同的线程上处理数据库,但对于细化来说,这肯定会有所帮助。应用程序代码可能存在许多不同的问题,您需要提交底部生成的错误日志以了解ANR的原因(应用程序没有响应)如果在5秒内没有响应,Android将关闭你的应用程序的错误 查看代码,只有2个字段需要插入数据库story_title、story_body,其余字段是多余的,除了_id是一个自动递增的键 通过浏览您的应用程序,我可以了解到以下几点:
- 对于SQLite,错误的数据类型使用了Integer而不是Int
- 错 语义是私有整数当我们使用is时,我们指的是布尔值 对/错
- 使其变小删除不使用的代码,只需坚持2个字段
此应用程序不运行后台任务,最好在不同的线程上处理数据库,但对于细化来说,这肯定会有所帮助。在创建表查询中发现一些问题在创建表查询中发现一些问题如何正确执行此操作?我对Android真的很陌生你是怎么做到的?我对安卓真的很陌生