Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否将数据保存到sqlite数据库?_Android_Sqlite - Fatal编程技术网

Android 是否将数据保存到sqlite数据库?

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

这是我的主要活动,我在MainActivity方法中insertData()的第29行遇到异常,MyDatabaseAdapter()类包含架构。您能帮我找到错误的地方吗

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)