2009-09-19 2 views
1

Я пытаюсь изменить значения в базе данных через текстовые поля в ASP.Обновление базы данных со значениями из текстового поля

Сначала я извлек значения из базы данных и установил эти значения в значение свойства текстовых полей в форме, чтобы пользователь мог видеть старые значения.

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

Может ли кто-нибудь сказать, что я должен сделать, чтобы получить эти новые значения ???? , когда отправить форму ????

код:

protected void Button2_Click(object sender, EventArgs e) 
     { 
      string MachineGroupName = TextBox2.Text; 
      string MachineGroupDesc = TextBox3.Text; 
      int TimeAdded = DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second; 

      if (MachineGroupName == "" || MachineGroupDesc == "") 
      { 
       Label2.Text = ("Please ensure all fields are entered"); 
       Label2.Visible = true; 
      } 
      else 
      { 
       System.Data.SqlClient.SqlConnection dataConnection = new SqlConnection(); 
       dataConnection.ConnectionString = 
        @"Data Source=JAGMIT-PC\SQLEXPRESS;Initial Catalog=SumooHAgentDB;Integrated Security=True"; 

       System.Data.SqlClient.SqlCommand dataCommand = new SqlCommand(); 
       dataCommand.Connection = dataConnection; 

       //tell the compiler and database that we're using parameters (thus the @first, @last, @nick) 
       dataCommand.CommandText = ("UPDATE [MachineGroups] SET ([MachineGroupName][email protected],[MachineGroupDesc][email protected],[TimeAdded][email protected]) WHERE ([MachineGroupID]= @node)"); 

       //add our parameters to our command object 
       dataCommand.Parameters.AddWithValue("@MachineGroupName", MachineGroupName); 
       dataCommand.Parameters.AddWithValue("@MachineGroupDesc", MachineGroupDesc); 
       dataCommand.Parameters.AddWithValue("@TimeAdded", TimeAdded); 

       dataConnection.Open(); 
       dataCommand.ExecuteNonQuery(); 
       dataConnection.Close(); 

      } 
+1

Это не связано с вопросом, но не забудьте удалить объект SqlCommand. –

+0

также я получаю значение узла из строки запроса, переданной с другой страницы. Это нормально работает Событие загрузки страницы имеет string node = Request.QueryString ["node"]; так что это значение узла – user175084

+0

возникает ли у вас исключение? потому что ваш код выглядит вроде нормально. – Konstantinos

ответ

0

нормально у меня есть страница вставки, которая работает отлично с этим кодом .......

protected void Button2_Click(object sender, EventArgs e) 
    { 
     string MachineGroupName = TextBox2.Text; 
     string MachineGroupDesc = TextBox3.Text; 
     int TimeAdded = DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second; 

     if (MachineGroupName == "" || MachineGroupDesc == "") 
     { 
      Label1.Text = ("Please ensure all fields are entered"); 
      Label1.Visible = true; 
     } 
     else 
     { 
      System.Data.SqlClient.SqlConnection dataConnection = new SqlConnection(); 
      dataConnection.ConnectionString = 
       @"Data Source=JAGMIT-PC\SQLEXPRESS;Initial Catalog=SumooHAgentDB;Integrated Security=True"; 

      System.Data.SqlClient.SqlCommand dataCommand = new SqlCommand(); 
      dataCommand.Connection = dataConnection; 

      //tell the compiler and database that we're using parameters (thus the @first, @last, @nick) 
      dataCommand.CommandText = ("INSERT [MachineGroups] ([MachineGroupName],[MachineGroupDesc],[TimeAdded]) VALUES (@MachineGroupName,@MachineGroupDesc,@TimeAdded)"); 

      //add our parameters to our command object 
      dataCommand.Parameters.AddWithValue("@MachineGroupName", MachineGroupName); 
      dataCommand.Parameters.AddWithValue("@MachineGroupDesc", MachineGroupDesc); 
      dataCommand.Parameters.AddWithValue("@TimeAdded", TimeAdded); 

      dataConnection.Open(); 
      dataCommand.ExecuteNonQuery(); 
      dataConnection.Close(); 

     } 
+0

это запрос на вставку ... – user175084

1

Вы не обеспечивая @node параметр. поэтому вы должны получить исключение. Кроме того, измените ваше заявление SQL, как, что без скобок:

long MachineGroupID = Convert.ToInt64(Request.QueryString["node"]); 
dataCommand.CommandText = "UPDATE [MachineGroups] SET [MachineGroupName][email protected],[MachineGroupDesc][email protected],[TimeAdded][email protected] WHERE [MachineGroupID]= @MachineGroupID"; 

//add our parameters to our command object 
dataCommand.Parameters.AddWithValue("@MachineGroupName", MachineGroupName); 
dataCommand.Parameters.AddWithValue("@MachineGroupDesc", MachineGroupDesc); 
dataCommand.Parameters.AddWithValue("@TimeAdded", TimeAdded); 
dataCommand.Parameters.AddWithValue("@MachineGroupID", MachineGroupID); 

EDIT: Как вы вывесили вашу страницу вставки, ваша таблица должна иметь столбец ID, идентифицирующий запись однозначно. Как я вижу в вашем обновлении SQL, имя столбца ID вашего имени равно MachineGroupID. Поэтому, чтобы обновить вашу запись, вы должны указать MachineGroupID как параметр @node. попробуйте получить это значение MachineGroupID в своем событии и передать его в свою команду.

+0

i get error node не существует в этом контексте – user175084

+0

Да, но вы должны установить его так, как вы получаете MachineGroupName и MachineGroupDesc. – Canavar

+0

Я не понял ... – user175084

1
long MachineGroupID = Convert.ToInt64(Request.QueryString["node"]); 
dataCommand.CommandText = "UPDATE [MachineGroups] SET 
[MachineGroupName][email protected],[MachineGroupDesc][email protected],  
[TimeAdded][email protected] WHERE [MachineGroupID]= @MachineGroupID",cn; //add our parameters to our command object 
dataCommand.Parameters.AddWithValue("@MachineGroupName", MachineGroupName); 
dataCommand.Parameters.AddWithValue("@MachineGroupDesc", MachineGroupDesc); 
dataCommand.Parameters.AddWithValue("@TimeAdded", TimeAdded); 
dataCommand.Parameters.AddWithValue("@MachineGroupID", MachineGroupID); 

пример:

SqlCommand cmdup = new SqlCommand("UPDATE [port1] SET [prt1][email protected] WHERE [no]= 1", cn);    
cmdup.Parameters.Add("@prt1", TextBox1.Text); 
cmdup.ExecuteNonQuery(); 

Я думаю, что это может помочь вашему делу , упомяните Connection в последней вашей команде обновления

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