Простая вставка SQL - PullRequest
       12

Простая вставка SQL

1 голос
/ 18 декабря 2011

Я новичок в базах данных и пытаюсь добавить новую запись, используя SQL. Код работает нормально в первый раз, но во второй раз выдает ошибку, говорящую о том, что он не может записать дубликаты в уникальный ключ. Третий раз работает нормально, но четвертый раз выдает ошибку. В принципе, кажется, что каждый раз ошибка выдается. Я понимаю, почему ошибка будет выдана, если данные были записаны, но когда я проверяю базу данных, она остается пустой. Что я делаю неправильно в своем коде, из-за которого запрос не беспокоит запись данных?

РЕДАКТИРОВАТЬ Если я ввожу SQL непосредственно в базу данных, это работает. Это не работает, когда я использую код C # ниже.

using (SqlCeConnection con = new SqlCeConnection(conString))
{
    con.Open();
    using (SqlCeCommand com = new SqlCeCommand("INSERT INTO User (Name, Age, URL) VALUES ( @name, @age, @url )", con))
    {
        com.Parameters.AddWithValue("@name", "James Y");
        com.Parameters.AddWithValue("@age", 28);
        com.Parameters.AddWithValue("@url", "www.example.com" );
        com.ExecuteNonQuery();
    }
}

Ответы [ 4 ]

1 голос
/ 18 декабря 2011

Я частично понял это.Видимо, вам также нужно скачать SQL CE Tools for Visual Studio.Я сделал это, и у меня была новая опция для включения SQL CE 4 в мой проект (я использовал опцию SQLCE, предполагая, что он будет использовать 4.0 по умолчанию, поскольку это тот, который я установил).Единственная проблема сейчас в том, что когда я пытаюсь добавить его, он говорит, что он не поддерживается типом проекта (консольный проект).Я видел сообщение в MSDN, в котором говорилось, что SQLCE 4 предназначено только для веб-проектов, но это было сообщение от нескольких месяцев назад, и на текущей странице загрузки говорится, что оно предназначено для веб-приложений или приложений для настольных компьютеров.В любом случае, это доставляет слишком много хлопот, и поэтому я просто собираюсь найти альтернативную базу данных, если не смогу решить эту проблему в ближайшее время.

ИСПРАВЛЕНО Я удалил SQLCE4 и SQLCE Tools, затем переустановил их.

0 голосов
/ 18 декабря 2011

Поскольку вы используете DataDirectory в строке подключения, файл копируется в вашу папку bin / debug, поэтому у вас есть несколько копий базы данных, одна в вашем проекте и одна в папке отладки.Сделайте строку подключения полным путем, чтобы избежать путаницы при отладке!

0 голосов
/ 18 декабря 2011

Имя является зарезервированным словом. Оберните это в []

using (SqlCeCommand com = new SqlCeCommand("INSERT INTO User ([Name], Age, URL) VALUES ( @name, @age, @url )", con))
0 голосов
/ 18 декабря 2011

Попробуйте сделать следующее в качестве SQL:

INSERT INTO [User] (Name, Age, URL) VALUES ( @name, @age, @url )

Пользователь - зарезервированное слово на сервере sql. Вы должны стараться не называть вашу таблицу "user".

...