2016-09-16 39 views
-2

下面的代码在我的项目在我的数据库类调用一个函数错误插入两个值到我的SQLite数据库近“/”语法的Android

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);  
     } 
    }); 

这里是INSERT INTO功能。我得到一个读取错误(接近“/”:语法错误)。任何人都可以帮我看看它,看看我的代码有什么问题。

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); 

} 
+2

你认为应该做什么?为什么你认为你应该在这一点上给出数据库的路径? – njzk2

回答

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); 
+0

你的代码解决了我的问题谢谢 – Branco30

+0

@ Branco30优秀,很高兴它为你工作。当你有机会时,请用复选标记标记此答案,以便其他人知道这是解决方案。 – Karakuri