Android 是否将数据保存到sqlite数据库?
这是我的主要活动,我在MainActivity方法中insertData()的第29行遇到异常,MyDatabaseAdapter()类包含架构。您能帮我找到错误的地方吗Android 是否将数据保存到sqlite数据库?,android,sqlite,Android,Sqlite,这是我的主要活动,我在MainActivity方法中insertData()的第29行遇到异常,MyDatabaseAdapter()类包含架构。您能帮我找到错误的地方吗 import android.content.ContentValues; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; impo
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText editText;
Button button;
MyDatabaseAdapter myDatabaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText=(EditText)findViewById(R.id.editText);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name=editText.getText().toString();
long id=myDatabaseAdapter.insertData(name);
if(id<0)
{
Toast.makeText(MainActivity.this,"Unsuccessful",Toast.LENGTH_LONG);
}
else
{
Toast.makeText(MainActivity.this,"Successfull",Toast.LENGTH_LONG).show();
}
}
});
}
}
您没有实例化MyDatabaseAdapter类。试一试
myDatabaseAdapter = new MyDatabaseAdapter(this) after setContentView().
对不起,如果我说错了什么,我还在学习 但在第29行中,考虑到您有两行包装和一个中断,这是一行: 长不应该用于数字吗
long id=myDatabaseAdapter.insertData(name);
long:long数据类型是一个64位2的补码整数
有符号long的最小值为-263,最大值为263-1。
在JavaSE8和更高版本中,可以使用long数据类型来表示
无符号64位长,最小值为0,最大值为
值264-1。当需要一系列值时,请使用此数据类型
比int提供的更宽。Long类还包含方法
例如compareUnsigned、divideUnsigned等来支持算术
无符号长字符的操作。“
首先,你应该能给我们提供更多的信息。您的logcat输出应该准确地显示错误是什么,或者与调试器一起运行,以便在异常发生时捕获异常。无论如何,根据提供的信息,至少有一个问题是create语句的语法无效。评估结果如下:
CREATE TABLE MyContacts(_id INTEGER PRIMARY KEY AUTOINCREMENT,Name VARCHAR(255),;
逗号和分号不是必需的,并且没有结束括号。应该是:
CREATE TABLE MyContacts(_id INTEGER PRIMARY KEY AUTOINCREMENT,Name VARCHAR(255))
或者更准确地说:
CREATE TABLE MyContacts(_id INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT)
…因为SQLite中没有VARCHAR类型。类型affinity转换您的VARCHAR(255)添加到文本,因为它包含字符串“CHAR”,但最好只指定SQLite类型,以确保获得所需的内容。我这样做了,但它仍在执行相同的操作。实际上,我在单击“保存”按钮时遇到了一个异常,如下所示android.database.sqlite.SQLiteException:near“EXISTSMyContacts”:语法错误(代码1):,编译时:如果EXISTSMyContacts,则删除表格在单词存在于上后创建空间..“如果存在,则删除表格”+表格名称。“如果存在,则删除表格”+表格名称
CREATE TABLE MyContacts(_id INTEGER PRIMARY KEY AUTOINCREMENT,Name TEXT)