2016-05-21 4 views
-1

Я имею очень странную ошибку здесьAndroid SQLite ошибка при вставке

android.database.sqlite.SQLiteException: near ",": syntax error (code 1): , while compiling: INSERT INTO course(banner_image,image,subtitle,homepage,short_summary,expected_learning,,new_release,syllabus,title,slug,key,featured,summary,faq,starter,project_description,required_knowledge,project_name,level,full_course_available) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 

У меня есть 2 подряд запятые в моем запросе. Проблема заключается в том, что я строю свою вставку заявление, используя класс ContentValues ​​как этот

private ContentValues createCourseValues(){ 
    ContentValues courseValues = new ContentValues(); 
    courseValues.put(CourseContract.Course.SUBTITLE, "Starting Out with Web Serving Technology"); 
    courseValues.put(CourseContract.Course.KEY, "ud171"); 
    courseValues.put(CourseContract.Course.IMAGE, "avc"); 
    courseValues.put(CourseContract.Course.EXPECTED_LEARNING, "You want to build Web services"); 
    courseValues.put(CourseContract.Course.FEATURED, false); 
    courseValues.put(CourseContract.Course.PROJECT_NAME, "asd"); 
    courseValues.put(CourseContract.Course.TITLE, "Intro to Backend"); 
    courseValues.put(CourseContract.Course.REQUIRED_KNOWLEDGE, "You have a basic working knowledge "); 
    courseValues.put(CourseContract.Course.SYLLABUS, "### Forms and Inputs How do web sites security?"); 
    courseValues.put(CourseContract.Course.NEW_RELEASE, false); 
    courseValues.put(CourseContract.Course.HOMEPAGE, "https://www.udacity.com/course/"); 
    courseValues.put(CourseContract.Course.PROJECT_DESCRIPTION, ""); 
    courseValues.put(CourseContract.Course.FULL_COURSE_AVAILABLE, false); 
    courseValues.put(CourseContract.Course.FAQ, "ads"); 
    courseValues.put(CourseContract.Course.BANNER_IMAGE, "xc bv"); 
    courseValues.put(CourseContract.Course.SHORT_SUMMARY, "cvxdf"); 
    courseValues.put(CourseContract.Course.SLUG, "intro-to-backend--ud171"); 
    courseValues.put(CourseContract.Course.STARTER, false); 
    courseValues.put(CourseContract.Course.LEVEL, "sdf s"); 
    courseValues.put(CourseContract.Course.DURATION_IN_HOURS, 504); 
    courseValues.put(CourseContract.Course.SUMMARY, "This course presents an overview."); 

Я запустить поиск и не нашел 2 запятые в любом месте (на самом деле, если он был Java будет обозленный со мной в любом случае) я не понимаю, почему есть 2 запятые. Я чувствую, что в логине есть что-то более глубокое, чего я не получаю.

это как моя вставка идет

CourseDBHelper courseDBHelper = new CourseDBHelper(mContext); 
    SQLiteDatabase db = courseDBHelper.getWritableDatabase(); 

    ContentValues courseValues = createCourseValues(); 
    long rowID = db.insertOrThrow(CourseContract.Course.TABLE_NAME, null, courseValues); 
    assertTrue(rowID != -1); 

Github link here

+0

Где этот метод в вашем GitHub? Я прошел классы и не могу найти его. –

+0

Приложение @DanielK -> src -> androidTest/java/com/jennyeckstein ... -> data -> TestDB.java – Jenny

ответ

1

Я нашел вашу проблему. В вашем CourseContract классе следующее поле пусто:

public static final String DURATION_IN_HOURS = "";

Я изменил его:

public static final String DURATION_IN_HOURS = "duration_in_hours";

и тесты прошли.

+1

thanx отличная работа. полностью забыл о стоимости там, поскольку он не нужен для вызова json. – Jenny

+0

Нет проблем. Рад, что я могу помочь. –

1

Вставляемый Exception о Добавленное делает имеет последовательные запятые в ...expected_learning,,new_release...

Глядя в вашем репо я думаю, может быть, вы пропустили передавая значение для CourseContract.Course.DURATION_IN_HOURS в эту вставку, заставляя ее отображаться как последовательные запятые.

+0

Да, я знаю, что ошибка имеет последовательные запятые, я разместил ее. На самом деле эта ошибка возникает из метода insertOrThrow. Эта вставка пытается поместить значения в таблицу, но по какой-то причине есть две запятые. DURATION_IN_HOURS определенно имеет значение, второе - снизу в коде выше – Jenny

+0

Я определил вашу ошибку прямо до переменной! Вам не пришлось ждать 34 минуты для @ Даниэля, чтобы увидеть мой ответ и сделать работу за вас. Теперь это смешно! – es0329

+0

Я думаю, @Jenny подумал, что вы ссылаетесь на метод 'createCourseValues ​​()' потому что 'CourseContract.Course.DURATION_IN_HOURS' действительно имеет значение там. Это то, о чем я думал, о чем вы говорите. Я прошел через ее классы DB, и именно там я нашел недостающее значение. Тем не менее, я нашел ваш ответ полезным, поэтому я поддержал его. –