Рейтинг:
2
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Есть некоторые проблемы с кодом. Пожалуйста, измените, как показано ниже, и попробуйте.
string sqlstr = "INSERT INTO Users(Name) VALUES(@NameParameter)";
cmd.Parameters.AddWithValue("@NameParameter", name);
Здесь
Имя присутствует ли эта колонка в
Users
стол.
[Обновление]
1.
Хранимая процедура - запрос вставки не работает[
^].
2.
Как вставить запись в таблицу базы данных sql server express?[
^].
3.
вставьте проблему в C#, используя sqlcommand[
^].
Итак, в основном проблема заключается в следующем ...
Цитата:
Весь пользовательский экземпляр и AttachDbFileName= подход ошибочны - в лучшем случае! Visual Studio будет копировать вокруг файла .mdf, и, скорее всего, ваша вставка работает просто отлично - но в конце концов вы просто смотрите не на тот файл .mdf!
Если вы хотите придерживаться этого подхода, то попробуйте поставить точку останова на myConnection.Вызов Close () - а затем проверьте файл .mdf с помощью SQL Server Mgmt Studio Express - я почти уверен, что ваши данные там есть.
Pankaj Mahor
Я тоже пробовал, но все та же проблема.
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Хорошо. Это связано с проблемой подключения.
Смотрите мой обновленный ответ в разделе "Обновление".
Pankaj Mahor
Я не создавал базу данных в среде sql management studio. Я создал его в c#.net - путем добавления нового элемента в проект и выбора файла базы данных на основе сервиса (.mdf).
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Как вы, возможно, знаете из этих ответов, что это ошибочный подход, поэтому попробуйте эти решения.
В противном случае, как было предложено в первой ссылке, поставьте точку останова на con.Close()
и проверьте файл .mdf с помощью SQL Server Mgmt Studio Express.
Pankaj Mahor
ОК, после того как поставили точку останова, как проверить .файл MDF?
Pankaj Mahor
Я уже установил management studio и могу легко подключиться.
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Итак, вы пытались проверить этот файл во время отладки ?
Pankaj Mahor
Я еще не трогал студию управления. Я делаю это только в c#.net например, создание БД, получение строки подключения all in c#.net-да.
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Ну ладно...
Рейтинг:
0
Bikash Prakash Dash
Попробуй это мой друг
private void button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ProTestDB.mdf;Integrated Security=True;User Instance=True");
string sqlstr = "INSERT INTO [Users] VALUES(@value)";
conn.Open();
SqlCommand cmd = new SqlCommand(sqlstr, conn);
cmd.Parameters.Add("@value",SqlDbType.VarChar).Value=textBox1.Text.Trim();
cmd.ExecuteNonQuery();
conn.Close();
}
catch
{
MessageBox.Show("error");
}
}
Pankaj Mahor
Попробовал, та же проблема - нет ошибки и пустая таблица.
Bikash Prakash Dash
Может у пожалуйста, скажите мне, сколько полей есть в таблице?
Pankaj Mahor
Одна таблица с именем "пользователи" и два columms с именем 'Имя пользователя' и 'имя'.
Bikash Prakash Dash
если вы вставляете значения во все столбцы, вам не нужно указывать имена столбцов в запросе INSERT.
если вы вставляете значения в один столбец , вы должны указать.
например->вставить в [Users] (UserID) значения(@value)
Pankaj Mahor
Я пытаюсь вставить значение текстового поля только в один столбец "имя".
Bikash Prakash Dash
таким образом, запрос будет
Вставить в [Пользователи] (Имя) значения(@value)
если поле UserID является первичным ключом, то оно будет по ошибке, в этом случае вам придется вставить какое-то значение для UserID.
Pankaj Mahor
Да, UserID-это первичный ключ, и я просто хочу добавить значение в столбец Name, а не UserID.
Bikash Prakash Dash
таким образом, невозможно, чтобы поле первичного ключа не могло быть нулевым.
Pankaj Mahor
Итак, как добавить данные во все столбцы.
Bikash Prakash Dash
Попробовать это
Объект sqlconnection соед = новый объект sqlconnection(@"источник данных=.\Именем sqlexpress;ключевое слово attachdbfilename=|параметр datadirectory|\ProTestDB.МДФ;Комплексная безопасность=true;в пользовательский экземпляр=true в");
строка sqlstr = "вставить в [Users] значения(@userid,@name)";
Коннектикут.Открыть();
SqlCommand cmd = новая команда sqlcommand(sqlstr, conn);
УМК.Параметры.Добавить("@имя пользователя",значения sqldbtype.Тип varchar).Value=textBox1.Text.Trim(); //для идентификатора пользователя он не может быть нулевым
cmd.Parameters.Add("@name",SqlDbType.VarChar).Value=textBox2.Text.Trim(); // для имени
УМК.Метод executenonquery();
Коннектикут.Закрывать();
Pankaj Mahor
Thanx, но когда я запускаю его, он выдает ошибку, которую я установил в try catch? Что же теперь делать?
Bikash Prakash Dash
используйте уловку вот так.
поймать(исключение бывший)
{
Ящик для сообщений.Шоу(напр.Метод toString());
}
вы можете видеть, какой тип ошибки вы получаете.Пожалуйста, укажите, какую ошибку вы получаете.
Pankaj Mahor
И когда я запускаю код без try catch, я получаю эту ошибку-
Явное значение столбца identity в таблице "пользователи" может быть задано только в том случае, если используется список столбцов и включен параметр IDENTITY_INSERT.
Bikash Prakash Dash
Вы должны ввести значение, которое уже было введено ранее в поле UserID. Поскольку это первичный ключ,его значение в разных строках должно быть уникальным.