не может вставить данные в базу данных - PullRequest
0 голосов
/ 29 марта 2012

Мне просто нужно то, что написано в моем названии. Я уже прочитал все предыдущие подобные посты, но не смог найти решение. Не могли бы вы посмотреть мой код? РЕДАКТИРОВАТЬ: я не получаю никаких исключений. Я просто не вижу новые данные в базе данных EDIT2: первые 4 ответа не решают мою проблему, потому что я отредактировал код и добавил команду executetenonquery.

int admin = 23;
SqlConnection thisConnection = new SqlConnection(
    ConfigurationManager.ConnectionStrings[
    "Data Source=...;Persist Security Info=True;User ID=myusername;Password=mypassword"]
    .ConnectionString);
SqlCommand nonqueryCommand = thisConnection.CreateCommand();
thisConnection.Open();
nonqueryCommand.CommandText = "INSERT INTO Account (Username,Password,AdministratorId) VALUES (@username,@password,@admin)";

nonqueryCommand.Parameters.Add("@username", SqlDbType.VarChar, 20);
nonqueryCommand.Parameters["@username"].Value = UsernameTextbox.Text.ToString();
nonqueryCommand.Parameters.Add("@password", SqlDbType.VarChar, 15);
nonqueryCommand.Parameters["@password"].Value = PasswordTextbox.Text.ToString();
nonqueryCommand.Parameters.Add("@admin", SqlDbType.Int);
nonqueryCommand.Parameters["@admin"].Value = admin;

EDIT:nonquerycommand.ExecuteNonQuery();


thisConnection.Close();

Ответы [ 6 ]

6 голосов
/ 29 марта 2012

Вы, похоже, на самом деле не выполняете свой запрос. Выполните его, прежде чем закрыть соединение.

nonquerycommand.ExecuteNonQuery();
3 голосов
/ 29 марта 2012

Здесь сразу выскакивают две вещи.

  1. Когда вы извлекаете строку подключения из ConfigurationManager.ConnectionStrings, вы должны передавать имя строки подключения в файле конфигурации, а не саму строку подключения. Я подозреваю, что вы, возможно, даже не получаете корректную строку подключения.

  2. Вам нужно позвонить ExecuteNonQuery() в nonqueryCommand экземпляре.

2 голосов
/ 29 марта 2012

Крис Фармер имеет деньги.

Добавить ...

nonqueryCommand.ExecuteNonQuery();
2 голосов
/ 29 марта 2012

Вместо

nonqueryCommand.Parameters.Add("@username", SqlDbType.VarChar,20);
nonqueryCommand.Parameters["@username"].Value = UsernameTextbox.Text.ToString();

Используйте

nonqueryCommand.Parameters.AddWithValue("@username", UsernameTextbox.Text.ToString());

и выполните свой запрос:

nonquerycommand.ExecuteNonQuery();
0 голосов
/ 28 апреля 2017

Вы должны выполнить запрос и закрыть соединение после этого, как показано ниже

nonquerycommand.ExecuteNonQuery();

или если вы хотите проверить, выполнен ли запрос или нет, выполните это

if(nonquerycommand.ExecuteNonQuery()>0){ //some message or function }

возвращаемое значение - количество строк, затронутых оператором.

0 голосов
/ 30 марта 2012

вы должны назначить соединение команде перед выполнением запроса для этого добавьте следующую строку перед thisConnection.Open ();

nonqueryCommand.Connection=thisConnection;
...