Что не так с этим запросом SQLCe?

в течение последнего часа я пробовал разные варианты этого запроса, но получаю ошибку в имени пользователя, а имя пользователя - это обычная строка с именем пользователя, которое я получаю из файла xml, не содержащего специальных символов или чего-либо еще

Я использую SLQ compact 3.5

P.S пробовал использовать? вместо @username также не работает все фейлы "nchar", кроме "date"

                C = nodeItem["user_from"].InnerText;
                avatar = nodeItem["user_from_avatar"].InnerText;
                string msgText = nodeItem["message"].InnerText;
                DateTime dt=DateTime.Now;

                string sql = "INSERT INTO posts(user,msg,avatar,date) VALUES(@username,@messige,@userpic,@thedate)";
                using (SqlCeCommand cmd = new SqlCeCommand(sql, connection))
                {
                    cmd.Parameters.Add("@username",C);
                    cmd.Parameters.Add("@messige", msgText.ToString());
                    cmd.Parameters.Add("@userpic", avatar.ToString());
                    cmd.Parameters.Add("@thedate", dt);
                    connection.Open();
                    cmd.ExecuteNonQuery();
                    adapter.Update(data);
                    connection.Close();
                }

Сообщение об ошибке:  alt text
(источник: clip2net.com)
Спасибо, Никола


person Nikola Sivkov    schedule 14.07.2009    source источник
comment
Какое сообщение об ошибке вы получаете?   -  person ba__friend    schedule 14.07.2009


Ответы (2)


Попробуйте заключить «пользователь» в квадратные скобки, «[пользователь]» (и, возможно, дату).

person Mitch Wheat    schedule 14.07.2009

В SqlCe u не может напрямую использовать параметры, я имею в виду предложение:

string sql = "INSERT INTO posts(user,msg,avatar,date) VALUES(@username,@messige,@userpic,@thedate)";

неправильно. должен быть

string sql = "INSERT INTO posts(user,msg,avatar,date) VALUES(?,?,?,?)";

а затем следует:

using (SqlCeCommand cmd = new SqlCeCommand(sql, connection))
                {
                    cmd.Parameters.Add("@username",C);
                    cmd.Parameters.Add("@messige", msgText.ToString());
                    cmd.Parameters.Add("@userpic", avatar.ToString());
                    cmd.Parameters.Add("@thedate", dt);
                    connection.Open();
                    cmd.ExecuteNonQuery();
                    adapter.Update(data);
                    connection.Close();
                }

В SqlCe параметры передаются как "?"

Надеюсь, это поможет тебе

person Community    schedule 10.10.2009