Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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 studio 2.3.3中的sqlite中插入命令不起作用_Android_Mysql_Sqlite - Fatal编程技术网

在android studio 2.3.3中的sqlite中插入命令不起作用

在android studio 2.3.3中的sqlite中插入命令不起作用,android,mysql,sqlite,Android,Mysql,Sqlite,嘿,伙计们,我一直在尝试将一些数据插入到我在android studio中创建的表中,代码如下 public class admin_manipulation extends AppCompatActivity { EditText Train_name; EditText Train_no; EditText Train_start; EditText Train_end; EditText Train_seats; Button insert; @Override protected v

嘿,伙计们,我一直在尝试将一些数据插入到我在android studio中创建的表中,代码如下

public class admin_manipulation extends AppCompatActivity {

EditText Train_name;
EditText Train_no;
EditText Train_start;
EditText Train_end;
EditText Train_seats;
Button insert;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin_manipulation);
    insert=(Button)findViewById(R.id.add);
    Train_name=(EditText)findViewById(R.id.trainname);
    Train_no=(EditText)findViewById(R.id.trainno);
    Train_start=(EditText)findViewById(R.id.Startlocation);
    Train_end=(EditText)findViewById(R.id.terminationpoint);
    Train_seats=(EditText)findViewById(R.id.seats);

}
public void addrecords(View view)
{
    String str_Train_name=Train_name.getText().toString();
    String str_Train_no=Train_no.getText().toString();
    String str_Train_start=Train_start.getText().toString();
    String str_Train_end=Train_end.getText().toString();
    String str_Train_seats=Train_seats.getText().toString();

    SQLiteDatabase Trains = openOrCreateDatabase("Train_list",MODE_PRIVATE,null);
    Trains.execSQL("CREATE TABLE IF NOT EXISTS Train_list(Train_name VARCHAR,Train_no VARCHAR,Train_start VARCHAR, Train_end VARCHAR , Seats_Available VARCHAR );");
    Toast.makeText(admin_manipulation.this, "The Add records Function has been called" , Toast.LENGTH_SHORT).show();
    String temp="INSERT INTO Train_list VALUES("+str_Train_name+","+str_Train_no+","+str_Train_start+","+str_Train_end+","+str_Train_seats+");";
    Toast.makeText(admin_manipulation.this,temp, Toast.LENGTH_LONG).show();
    Trains.execSQL(temp);
    }
每当我调用此活动时,都会收到错误消息

unfortunately db has stopped
(db是应用程序的名称)

所以我决定把这句话注释掉

Trains.execSQL(temp);
我发现活动在执行时没有任何问题,所以应用程序没有崩溃,所以我决定终止插入查询,看看是否有任何问题

据我所知,它看起来不错,只要我包括

Trains.execSQL(temp);
在我的代码中,应用程序崩溃(temp包含我刚才烤过的查询)


任何帮助都将不胜感激。

您没有实现
getWritableDatabase()
方法+在sql查询中您没有使用单引号
“插入列车列表值(“+stru列车名+”、“+stru列车号+”、“+stru列车开始+”、“+stru列车结束+”、“+stru列车座位+”)

换成

String temp="INSERT INTO Train_list VALUES(" '"+str_Train_name+"'","'"+str_Train_no+"'","'"+str_Train_start+"'","'"+str_Train_end+"'","'"+str_Train_seats+"'");"; 
试试这个

   SQLiteDatabase db = openOrCreateDatabase( "Train_list.db", SQLiteDatabase.CREATE_IF_NECESSARY , null);
    try {
        final String CREATE_TABLE_TRAIN_LIST = "CREATE TABLE IF NOT EXISTS Train_list ("
                + "ID INTEGER primary key AUTOINCREMENT,"
                + "Train_name VARCHAR,"
                + "Train_no VARCHAR,"
                + "Train_start VARCHAR,"
                + "Train_end VARCHAR,"
                + "Seats_Available VARCHAR);";
        db.execSQL(CREATE_TABLE_TRAIN_LIST);
        Toast.makeText(admin_manipulation.this, "table created ", Toast.LENGTH_LONG).show();
        String sql =
            "INSERT or replace INTO Train_list (Train_name, Train_no, Train_start, Train_end, Seats_Available) VALUES(" + str_Train_name + ", " + str_Train_no + ", " + str_Train_start ", " + str_Train_end ", " + str_Train_seats + ")" ;       
                db.execSQL(sql);
    }
    catch (Exception e) {
        e.printStackTrace();
}

你能在更小的范围内重现这个问题吗?例如,写几行纯SQLite/MySQL语法(顺便问一下,是哪一行?为什么要标记这两行?),这会在不允许其他编程语言的情况下导致相同的问题。谢谢这帮了我这么多忙,我对这一点很陌生,这帮了我这么多理解!我建议您在开始编码之前查找SQLite数据库和查询的语法。很好地理解它。互联网上有大量的资源。