2016-03-23 3 views
0

Я работаю над проектом flex actionscript. В котором я собираюсь сохранять/вставлять записи в базу данных sqlite, которую я получил в ответ.Sqlite insert дает ошибку синтаксиса

Но форма, которая записывает некоторые записи, не помещается в таблицу. Когда я поймаю ошибку, она вызывает sql-ошибку.

около '/': ошибка синтаксиса

В ответ я получил весь HTML-разметку.

Я написал/выполнить запрос внутри for loop как:

var insert:SQLStatement = new SQLStatement(); 
insert.sqlConnection = sqlConnectionSync; 
insert.text = 'INSERT OR IGNORE INTO TableName (MessageID, AccountID, Body) VALUES ("' + listArray[i].MessageID + '","' + listArray[i].AccountID + '","' + listArray[i].Body + '")'; 
insert.execute(); 

Я также попытался изменения " вместо ' и наоборот.

Но это дает другую ошибку '

Ошибка # 3115: Ошибка SQL.

вблизи 'LL': ошибка синтаксиса

И

возле '_blank': ошибка синтаксиса

Любая помощь будет принята с благодарностью.

ответ

2

Чтобы избежать такой проблемы, вы можете использовать SQLStatement.parameters свойство, как это, например:

var insert:SQLStatement = new SQLStatement(); 

    insert.text = 'INSERT OR IGNORE INTO TableName (MessageID, AccountID, Body) VALUES (:param1, :param2, :param3)'; 

    insert.parameters[':param1'] = listArray[i].MessageID; 
    insert.parameters[':param2'] = listArray[i].AccountID; 
    insert.parameters[':param3'] = listArray[i].Body; 

    insert.execute(); 

Надежда, которая может Помогите.

+0

Удивительный человек. Большое спасибо. – ketan

+0

Можете ли вы дать мне решение этой проблемы? http://stackoverflow.com/questions/37725499/datagrid-itemrenderer-getting-issue-while-scroll – ketan

0

Проводка полного запроса в виде текста поможет, но, скорее всего, у вас есть «или» символы в ваших данных (например, ... = «_ blank» или «You will»). Вам нужно будет избежать ваших значений переменных ., прежде чем вставлять их в базу данных я переключился "и" из вашего примера:

insert.text = "INSERT OR IGNORE INTO TableName (MessageID, AccountID, Body) VALUES ('" + escapeChars(listArray[i].MessageID) + "','" + escapeChars(listArray[i].AccountID) + "','" + escapeChars(listArray[i].Body) + "')"; 

private function escapeChars(myString:String):String 
{ 
    // Since we are using "'" we'd need to escape all other "'" characters 
    return myString.replace(/'/gi, "\'"); 
}