2016-08-30 4 views
1

Ich bin nur ein Anfänger versucht, das Tutorial zu folgen. Ich suchte nach den engsten Fragen, probierte mehrere aus. Keiner von ihnen funktioniert für mich. Ich brauche nur ein paar Hinweise, wo es schief geht. Vielen Dank.C# Web-Formular übermittelte Daten konnten nicht SQL-Datenbank einfügen

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 

namespace Company 
{ 
    public partial class ContactUs : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     public void update(string FirstName, string LastName, string EmailAddress, string MobileNumber, string category, string message) 
     { 
      SqlConnection conn = new SqlConnection(GetConnectionString()); 
      string sql = "INSERT INTO ContactInformation (GUID,FirstName, LastName, EmailAddress, Number, Category, Message) VALUES " 
         + " (@GUID,@FirstName,@LastName,@EmailAddress,@Number,@category,@message)"; 

       Guid guid = Guid.NewGuid(); 
       string guidString = guid.ToString(); 

      try 
      { 
       conn.Open(); 
       SqlCommand cmd = new SqlCommand(sql, conn); 
       SqlParameter[] p = new SqlParameter[7]; 
       p[0] = new SqlParameter("@GUID", SqlDbType.UniqueIdentifier,50); 
       p[1] = new SqlParameter("@FirstName", SqlDbType.VarChar,50); 
       p[2] = new SqlParameter("@LastName", SqlDbType.VarChar,50); 
       p[3] = new SqlParameter("@EmailAddress", SqlDbType.VarChar,50); 
       p[4] = new SqlParameter("@Number", SqlDbType.VarChar,50); 
       p[5] = new SqlParameter("@Category", SqlDbType.VarChar,50); 
       p[6] = new SqlParameter("@Message", SqlDbType.VarChar,50); 
       p[0].Value = guid; 
       p[1].Value = FirstName; 
       p[2].Value = LastName; 
       p[3].Value = EmailAddress; 
       p[4].Value = MobileNumber; 
       p[5].Value = category; 
       p[6].Value = message; 

       for (int i = 0; i < p.Length; i++) 
       { 
        cmd.Parameters.Add(p[i]); 
       } 
       cmd.CommandType = CommandType.Text; 
       cmd.ExecuteNonQuery(); 
      } 
      catch (System.Data.SqlClient.SqlException ex) 
      { 
       string msg = "Insert Error:"; 
       msg += ex.Message; 
       throw new Exception(msg); 
      } 
      finally 
      { 
       conn.Close(); 
      } 
     } 

     public string GetConnectionString() 
     { 
      return System.Configuration.ConfigurationManager.ConnectionStrings["ContactInformation"].ConnectionString; 
     } 
     protected void btnSubmit_Click(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       Validate(); 
       update(txtFirstName.Text, 
            txtLastName.Text, 
            txtEmail.Text, 
            txtNumber.Text, 
            DropDownList1.SelectedItem.Text, 
            txtMessage.Text); 
       Response.Write("Record was successfully added!"); 
       //ClearForm(Page); 
      } 
     } 
     public static void ClearForm(Control Parent) 
     { 
      if (Parent is TextBox) 
      { (Parent as TextBox).Text = string.Empty; } 
      else 
      { 
       foreach (Control c in Parent.Controls) 
        ClearForm(c); 
      } 
     } 
    } 
} 

Die Verbindungszeichenfolge befindet sich in der Datei web.config.

<connectionStrings> 
    <add name="ContactInformation" connectionString="datasource=database;initial catalog=ContactInformation;Integrated Security=SSPI;userid=xxx;password=xxx;"/> 
</connectionStrings> 

ich die Website auf meinem lokalen Rechner eingesetzt und versuchen, es auf der anderen Seite auf Internet Explorer.And zu testen, ich öffne die Datenbank-Management-Tools, ist die Tabelle noch leer.

+0

Hallo @MethodMan Tut mir leid, ich bin nicht vertraut mit dem Posten. Ich habe gerade meinen Code bearbeitet. Ich erhalte keine Fehler für den Code. Ich konnte einfach keine Daten in die Datenbank einfügen. – GoResistanceLi

+0

Haben Sie versucht, Ihren Code Zeile für Zeile mit dem Debugger zu durchlaufen? Hat es dem Pfad durch den Code gefolgt, den Sie erwartet haben? – mason

+0

Ich denke, dass Sie schauen sollten, wie man Parameter auch dann richtig erstellt, wenn Sie den Code durchgehen, den Sie auswerten sollten und alle Parameterwerte. Setze auch einen Haltepunkt in diese Zeile und sieh nach, ob er auf diese Zeile trifft. string msg = "Insert Error:"; 1' solltest du auch deine Sql-Objekte um ein 'using() {}' wickeln, das du nicht entsorgst erstellte Objekte – MethodMan

Antwort

0

Sie testen für postback in der Schaltfläche klicken. Es ist wahrscheinlich wahr, nicht falsch. Ändern Sie Ihre Methode auf diese Weise. Wenn Sie sehen, dass es die "postback" Zeichenfolge ausgibt, müssen Sie Ihre Prüfung auf IsPostBack anstelle von ändern! IsPostBack Auch nicht sicher, was Validate() ist und ich sehe es nicht definiert. Könnte eine Ausnahme verursachen. Kommentieren Sie es, wenn Sie Probleme haben, nur den Einsatz zu testen.

protected void btnSubmit_Click(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       Validate(); 
       update(txtFirstName.Text, 
            txtLastName.Text, 
            txtEmail.Text, 
            txtNumber.Text, 
            DropDownList1.SelectedItem.Text, 
            txtMessage.Text); 
       Response.Write("Record was successfully added!"); 
       //ClearForm(Page); 
      } 
      else Response.Write("Postback"); 
     } 
Verwandte Themen