我项目中的下面代码调用我的数据库类中的一个函数,将两个值插入到我的sqlite数据库中
saveButton = (Button) findViewById(R.id.Save);
saveButton.setOnClickListener(new View.OnClickListener( ) {
@Override
public void onClick(View v) {
addCig = (EditText) findViewById(R.id.cigName );
myDbHelper1.insertNewCig(addCig.toString(), fileName );
}
});
这是插入功能。我收到的错误是读取(接近" /":语法错误)。任何人都可以帮我看看它,看看我的代码有什么问题。
public void insertNewCig(String name, String file)
{
//DB_PATH = "/data/data/com.example.newdb/databases/"
//DB_NAME = "cigarettes"
String myPath = DB_PATH + DB_NAME;
String row1 = "INSERT INTO " + myPath + " (" + KEY_FIRST + ", " + KEY_LAST + ") VALUES(" + name + ", " + file + ")";
myDataBase.execSQL(row1);
}
答案 0 :(得分:1)
myPath
应该是数据库中表的名称,而不是数据库文件的名称和路径。您还需要在插入的值周围添加单引号,否则SQLite不会识别它们是文字字符串值而不是其他内容(例如列名称)。这是不尝试在代码中手动构建原始SQL语句的众多原因之一。
由于您有SQLiteDatabase
,因此您也可以使用insert()
方法代替execSQL()
。在这种情况下,你会给它一个ContentValues
而不是构造一个原始语句,这样就不需要用单引号包装字符串值。
ContentValues values = new ContentValues();
values.put(KEY_FIRST, name);
values.put(KEY_LAST, file);
myDataBase.insert(TABLE_NAME, null, values);