在android studio 2.3.3中的sqlite中插入命令不起作用
嘿,伙计们,我一直在尝试将一些数据插入到我在android studio中创建的表中,代码如下在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
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数据库和查询的语法。很好地理解它。互联网上有大量的资源。