2013-10-20 38 views
-2

我正在编写更新SQL Server数据库中的信息的asp.net/c# web表单。我遇到的问题是注册页面。出于某种原因,数据将不会发送到服务器。我也有主页非常相似的代码,运行良好。数据库不会收到信息

这里的注册页面,不发送信息到SQL Server:

using System; 
    using System.Web.UI.HtmlControls; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.WebControls.WebParts; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.UI; 
    using System.Data.SqlClient; 
    using System.Drawing; 
    using System.Configuration; 

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

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString1"].ConnectionString); 

     SqlCommand cmd = new SqlCommand("INSERT INTO Users(UserID, Password, FirstName, MiddleName, LastName, Email) VALUES (@UserID, @Password, @FirstName, @MiddleName, @LastName, @Email)", conn); 
     cmd.CommandType = System.Data.CommandType.Text; 

     cmd.Parameters.AddWithValue("@UserID", TextBox1.Text); 
     cmd.Parameters.AddWithValue("@Password", TextBox2.Text); 
     cmd.Parameters.AddWithValue("@FirstName", TextBox3.Text); 
     cmd.Parameters.AddWithValue("@MiddleName", TextBox4.Text); 
     cmd.Parameters.AddWithValue("@LastName", TextBox5.Text); 
     cmd.Parameters.AddWithValue("@Email", TextBox6.Text); 

     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     Response.Redirect("login.aspx"); 
    } 

    protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString1"].ConnectionString); 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand("select * from Users where UserID= '" + TextBox1.Text + "'", conn); 
    SqlDataReader dr = cmd.ExecuteReader(); 
    if (dr.Read()) 
    { 
     Label1.Text="UserName is Taken"; 
     this.Label1.ForeColor=Color.Red; 
    } 
    else 
    { 
     Label1.Text="UserName is not Taken"; 
     this.Label1.ForeColor = Color.Black; 
    } 

    } 
} 

下面是主要页面的代码,它运行良好:

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

    namespace WebApplication3 
    { 
public partial class _Default : System.Web.UI.Page 
{ 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString1"].ConnectionString); 
     SqlCommand cmd = new SqlCommand("INSERT INTO Observations(UserID, DateTime, Loc_Lat, Loc_Lon, Observation, Comments) VALUES (@UserID, @DateTime, @Loc_Lat, @Loc_Lon, @Observation, @Comments)", conn); 
     cmd.CommandType = System.Data.CommandType.Text; 
     cmd.Parameters.AddWithValue("@UserID", TextBox1.Text); 
     cmd.Parameters.AddWithValue("@Observation", TextBox2.Text); 
     cmd.Parameters.AddWithValue("@DateTime", DateTime.Now); 
     cmd.Parameters.AddWithValue("@Comments", TextBox3.Text); 
     cmd.Parameters.AddWithValue("@Loc_Lat", TextBox4.Text); 
     cmd.Parameters.AddWithValue("@Loc_Lon", TextBox5.Text); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     Response.Redirect("Webform1.aspx"); 
    } 
} 

是什么原因我的问题? 在此先感谢!

编辑: 继承人我的连接字符串:

(<)add name="testConnectionString1" connectionString="Data Source=MALAYSIA\SQLEXPRESS;Initial Catalog=test;Integrated Security=True" 
+1

您是否已经仔细检查了您的参数,或者如果某个特定数据库字段需要或不需要值?您应该能够追踪(调试)并找到根本原因。在ExecuteNonQuery()上设置一个断点 –

+2

我建议你阅读SQL注入漏洞。 –

+0

你的**连接字符串**是什么样的? –

回答

0

好,我找到了解决我的问题。原来在Button Properties中,PostBackurl被设置为login.aspx页面。删除后,程序现在可以工作。