2012-06-26 2 views
0

Я новичок в C#. Я пытаюсь вставить значения из текстового поля в таблицу в моей базе данных.Вставка в базу данных из текстового поля в C# с использованием параметров

Название таблицы: адрес

Поля: имя (VARCHAR (50)), возраст (целое), город (NCHAR (10))

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

  string s = @"Data  Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"; 
      SqlConnection a = new SqlConnection(s); 

      a.Open(); 
      SqlCommand comm = new SqlCommand("INSERT INTO [address](name,age,city) VALUES(@na,@ag,@ci)"); 
      string na = textBox1.Text; 
      int ag = int.Parse(textBox2.Text); 
      string ci = textBox3.Text; 

      comm.Parameters.Add("@na", System.Data.SqlDbType.VarChar,50).Value = na; 
      comm.Parameters.Add("@ag", System.Data.SqlDbType.Int).Value = ag; 
      comm.Parameters.Add("@ci", System.Data.SqlDbType.NChar,10).Value = ci; 
      comm.Connection = a; 
      comm.ExecuteNonQuery(); 
      MessageBox.Show("okay"); 
      a.Close(); 

Значения не отражаются в базе данных.

+0

Из верхней части моей головы, я собираюсь бросить там, что это проблема разрешения файловой системы, так как он прилагает файл SQLExpress. Просто дикая догадка, но давайте посмотрим, держит ли она это. =) – CodingGorilla

+0

@AustinSalonen не получает никаких ошибок, но значения не отражаются в базе данных. – dnivra

+0

comm.Parameters.Add ("@ na", System.Data.SqlDbType.VarChar, 50) .Value = na; , вы можете попытаться установить закрывающий кронштейн. comm.Parameters.Add ("@ na", System.Data.SqlDbType.VarChar, 50) .Value = na); – Thousand

ответ

3

попробовать с этим кодом:

string connectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"; 

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 

    using (SqlCommand insertCommand = connection.CreateCommand()) 

     { 
      insertCommand.CommandText = "INSERT INTO address(name,age,city) VALUES (@na,@ag,@ci)"; 
      insertCommand.Parameters.Add("@na", na); 
      insertCommand.Parameters.Add("@ag", ag); 
      insertCommand.Parameters.Add("@ci", ci); 


      insertCommand.Connection.Open(); 
      insertCommand.ExecuteNonQuery(); 


     } 
} 
+0

Почему вы закрываете SqlConnection внутри 'using'? – dwerner

+0

Правильно, используя утилиту –

+0

, используя call dispose в конце обработки. –

Смежные вопросы