【问题标题】:trying to insert data into a database using asp.net and c#尝试使用 asp.net 和 c# 将数据插入数据库
【发布时间】:2014-04-11 04:28:10
【问题描述】:

当单击我的 asp.net 页面上的按钮时,我试图将数据插入表中。我没有收到任何错误,但是当我在插入信息后尝试将用户重定向到新页面时,它会停留在同一页面上。下面是我的代码。

SqlConnection db = new SqlConnection();
    db.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["AboutYouEntities"].ConnectionString;
    db.Open();


    SqlCommand insertUser = new SqlCommand();
    SqlCommand insertContact = new SqlCommand();

    insertUser.CommandText = "INSERT into USER (Email, Name, Gender, BirthDate, LinuxDistro) VALUES ('" + userInfo.Email + "','" + userInfo.Name + "','" + userInfo.Gender + "','" + userInfo.BirthDate + "','" + userInfo.LinuxDistro + "')";


    insertContact.CommandText = "INSERT into CONTACT (Phone, Zip, Comments) VALUES ('" + userContact.Phone + "','" + userContact.Zip + "','" + userContact.Comments + "')";

    insertUser.ExecuteNonQuery();
    insertContact.ExecuteNonQuery();

    db.Close();

    Response.Redirect("ThankYou.aspx");

【问题讨论】:

  • 你是从 UpdatePanel 内部的控件(例如按钮单击)运行它吗?
  • SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入

标签: c# asp.net sql sql-server code-behind


【解决方案1】:

您的代码有一些问题:

  • 您的命令没有附加连接。
  • USER 是reserve word,应该用方括号括起来,例如[USER]
  • 你应该parametrized你的查询,你倾向于SQL Injection
  • 考虑在using 语句中包含SqlConnectionSqlCommand 对象,因为这将确保资源的处置。

代码:

using (SqlConnection db = new SqlConnection())
{
    db.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["AboutYouEntities"].ConnectionString;
    db.Open();
    using (SqlCommand insertUser = new SqlCommand())
    {
        insertUser.Connection = db;
        insertUser.CommandText = "INSERT into [USER] (Email, Name, Gender, BirthDate, LinuxDistro) VALUES (@Email, @Name, @Gender,@BirthDate, @LinuxDistro);";
        insertUser.Parameters.AddWithValue("@Email", userInfo.Email);
        insertUser.Parameters.AddWithValue("@Name", userInfo.Name);
        insertUser.Parameters.AddWithValue("@Gender", userInfo.Gender);
        insertUser.Parameters.AddWithValue("@BirthDate", userInfo.BirthDate);
        insertUser.Parameters.AddWithValue("@LinuxDistro", userInfo.LinuxDistro);
        insertUser.ExecuteNonQuery();
    }
    using (SqlCommand insertContact = new SqlCommand())
    {
        insertContact.Connection = db;
        insertContact.CommandText = "INSERT into CONTACT (Phone, Zip, Comments) VALUES (@Phone, @Zip, @Comments);";
        insertContact.Parameters.AddWithValue("@Phone", userContact.Phone);
        insertContact.Parameters.AddWithValue("@Zip", userContact.Zip);
        insertContact.Parameters.AddWithValue("@Comments", userContact.Comments);
        insertContact.ExecuteNonQuery();
    }
}

【讨论】:

  • 我改变了我的代码....我没有收到任何错误,但是当点击按钮时它仍然没有转到下一页。如果我把这段代码拿出来,它会重定向。
  • @user3255899,所以这段代码有效吗?您可能会遇到异常并且它正在阻止代码执行。捕获异常日志,检查它等等。
  • 当我删除将其添加到数据库的代码块时,我的按钮会重定向用户,但是当我添加代码以插入数据库时​​它不起作用...我尝试使用 catch
  • 我让它重定向,但它没有插入数据库...我该怎么做才能检查原因
猜你喜欢
  • 2021-05-19
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多