2016-08-30 9 views
1

私はチュートリアルに従っているばかりの初心者です。私は最も近い質問を検索し、いくつか試しました。それらのどれも私のために働かない。可能であればどこか手がかりが必要なだけです。ありがとう。C#のWebフォームから送信されたデータはSQLデータベースを挿入できませんでした

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); 
      } 
     } 
    } 
} 

接続文字列はweb.configファイルにあります。

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

私は私のローカルマシン上のWebサイトを展開し、他の側に、インターネットExplorer.And上でそれをテストしようと、私は、データベース管理ツールを開いて、テーブルには空のままです。

+0

こんにちは@MethodMan申し訳ありませんが投稿に慣れていません。私は自分のコードを編集しました。私はコードのエラーを受け取りません。データベースにデータを挿入できませんでした。 – GoResistanceLi

+0

デバッガでコードを1行ずつ進めてみましたか?それは、あなたが期待したコードのパスをたどったのでしょうか? – mason

+0

評価するべきコードとすべてのパラメータ値をステップ実行したときにも、パラメータを適切に作成する方法を調べるべきだと思います。この行にブレークポイントを設定して、この行にヒットするかどうかを確認してください。 'string msg =" Insert Error: "; 1'また、Sqlオブジェクトを' using(){} 'の周りにラップして、作成されたオブジェクト – MethodMan

答えて

0

ボタンクリックでポストバックをテストしています。それはおそらくTRUEではないでしょう。あなたの方法をこれに変更してください。 "ポストバック"文字列を書き出すと表示される場合は、チェックをIsPostBackの代わりに変更する必要があります。IsPostBack また、Validate()が何であるかわかりません。定義されていません。例外が発生する可能性があります。挿入物をテストするだけで問題がある場合は、コメントアウトしてください。

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"); 
     } 
関連する問題