Что не так с этим SQLCe Query? - PullRequest
2 голосов
/ 14 июля 2009

за прошедший час я пробовал разные варианты этого запроса, но я получаю сообщение об ошибке в имени пользователя, а имя пользователя - это просто обычная строка с именем пользователя, которую я получаю из 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 )
Спасибо , Никола

Ответы [ 2 ]

7 голосов
/ 14 июля 2009

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

1 голос
/ 10 октября 2009

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

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 параметры передаются как "?"

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

...