2017-05-10 3 views
0

Ich habe nur ein einfaches Verfahren zeigt unter:falsches Format der Initialisierungszeichenfolge in ADO.NET

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 

     string sqlcmdString = string.Format("UPDATE Bills SET Name = '@name', Time = '@time', Product = '@pro', Price = @money WHERE Name = '@value';"); 

     using (SqlConnection con = new SqlConnection(sqlcmdString)) 
     using (SqlCommand cmd = new SqlCommand("dbo.Bills", con)) 
     { 
      // tell ADO.NET it's a stored procedure (not inline SQL statements) 
      cmd.CommandType = CommandType.StoredProcedure; 

      // define parameters 
      cmd.Parameters.Add("@name", SqlDbType.NVarChar, 100).Value = tb_TenKH.Text; 
      cmd.Parameters.Add("@time", SqlDbType.DateTime).Value = cb_Thoigian.Text; 
      cmd.Parameters.Add("@pro", SqlDbType.NVarChar, 100).Value = tb_SanPham.Text; 
      cmd.Parameters.Add("@money", SqlDbType.Money).Value = tb_ThanhTien.Text; 
      cmd.Parameters.Add("@value", SqlDbType.NVarChar, 100).Value = cellvalue; 

      // open connection, execute stored procedure, close connection again 
      con.Open(); 
      if (cmd.ExecuteNonQuery() > 0) 
      { 
       //dosomething 
      } 
      else 
      { 
       MessageBox.Show("Failed!!!"); 
      } 
      con.Close(); 
     } 


    } 

Diese Linien nicht ausgeführt werden können. Wenn ich es debuggen, zeigt es Fehler:

System.ArgumentException: 'Format of the initialization string does not conform to specification starting at index 0.'

mir bewusst, dass etwas in meinem sqlcmdString vielleicht über Syntax falsch gelaufen ist, aber ich konnte es nicht bestimmen. Bitte geben Sie mir eine Hilfe.

+0

'SqlConnection' erwartet eine Verbindungszeichenfolge als Parameter, kein Update-Abfrage. Das Update gehört in 'SqlCommand'. –

+0

Wohin gibst du den SP Namen? "dbo.Bills" sieht nicht wie SP-Name aus. Lesen Sie diesen SO-Beitrag: http://StackOverflow.com/Questions/12834249/Execute-Stored-Procedure-From-WPF –

+0

@diiN__________ Was kann ich dagegen tun? Ich bin so fest ... –

Antwort

0

Ich bin falsch in Syntax: Ich wie unten verwenden sollte:

string sqlcmdString = string.Format("UPDATE Bills SET Name = '@name', Time = '@time', Product = '@pro', Price = @money WHERE Name = '@value';"); 

     using (SqlConnection con = new SqlConnection(connString)) 
     { 
      con.Open(); 
      using (SqlCommand cmd = new SqlCommand(sqlcmdString, con)) 
      { 
       cmd.CommandType = CommandType.Text; 
       // define parameters 
       cmd.Parameters.Add("@name", SqlDbType.NVarChar, 100).Value = tb_TenKH.Text; 
       cmd.Parameters.Add("@time", SqlDbType.DateTime).Value = cb_Thoigian.Text; 
       cmd.Parameters.Add("@pro", SqlDbType.NVarChar, 100).Value = tb_SanPham.Text; 
       cmd.Parameters.Add("@money", SqlDbType.Money).Value = tb_ThanhTien.Text; 
       cmd.Parameters.Add("@value", SqlDbType.NVarChar, 100).Value = cellvalue; 

       if (cmd.ExecuteNonQuery() > 0) 
       { 
        MessageBox.Show("Thành Công!!!"); 
        if (passrow != null) 
        { 
         string[] result_back = { tb_TenKH.Text, cb_Thoigian.Text, tb_SanPham.Text, tb_ThanhTien.Text }; 
         passrow(result_back); 
         { 
          this.Hide(); 
         } 
        } 
       } 
       else 
       { 
        MessageBox.Show("Thất Bại!!!"); 
       } 
       con.Close(); 
      } 
     } 
+0

Warum noch Parameter verwenden? Sie können @name durch tb_TenKH.Text usw. in sqlcmdString selbst ersetzen. –

Verwandte Themen