将数据插入数据库,无法弄清楚

本文关键字:弄清楚 数据库 数据 插入 | 更新日期: 2023-09-27 18:34:47

我试图了解如何将数据插入我的数据库,所以我看了很多教程,但我不明白该怎么做。 一个教程让我走到了这一步:

public partial class Register : System.Web.UI.Page{
public string ID, Pass, Email, BDYear, BDMonth, BDDay, FullName;
SqlCommand cmd;
SqlConnection con;
SqlDataAdapter da;
protected void Page_Load(object sender, EventArgs e)
{

    if (IsPostBack){
        ID = Request.Form["ID"];
        Pass = Request.Form["PW"];
        Email = Request.Form["EMAIL"];
        BDYear = Request.Form["BDYear"];
        BDMonth = Request.Form["BDMonth"];
        BDDay = Request.Form["BDDay"];
        FullName = Request.Form["FullName"];
        cmd = new SqlCommand("INSERT INTO UserInfo (ID, Pass, Email, BDYear, BDMonth, BDDay, FullName) VALUES (ID, Pass, Email,BDYear, BDMonth, BDDay, FullName)");
    }
}
}

但它实际上不起作用,或者显示出它工作的迹象,我认为我需要有人的帮助,告诉我在我的情况下该怎么做。我不知道这里写的任何内容是否正确,但请我需要指导。所有变量都是根据这些名称在 aspx 页中设置的。

将数据插入数据库,无法弄清楚

你应该尝试这样的事情:

  • 将查询语句设置为字符串
  • 将您的SqlCònnectionSqlCommand放入using(..) { ... }块中,以确保正确处置
  • 使用显式类型定义参数,设置其值
  • 打开连接、
  • 执行查询、关闭连接

这将是要使用的代码:

   -- your INSERT statement:
   string query = "INSERT INTO UserInfo(ID, Pass, Email, BDYear, BDMonth, BDDay, FullName) " + 
                  "VALUES (@ID, @Pass, @Email, @BDYear, @BDMonth, @BDDay, @FullName);";
   -- define your connection to the database
   using (SqlConnection conn = new SqlConnection("server=.;database=test;Integrated Securiy=SSPI;"))
   -- define your SqlCommand
   using (SqlCommand cmd = new SqlCommand(query, conn))
   {
       -- define the parameters and set their values
       cmd.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
       cmd.Parameters.Add("@Pass", SqlDbType.VarChar, 50).Value = Pass;
       cmd.Parameters.Add("@Email", SqlDbType.VarChar, 255).Value = Email;
       cmd.Parameters.Add("@BDYear", SqlDbType.Int).Value = BDYear;
       cmd.Parameters.Add("@BDMonth", SqlDbType.Int).Value = BDMonth;
       cmd.Parameters.Add("@BDDay", SqlDbType.Int).Value = BDDay;
       cmd.Parameters.Add("@Fullname", SqlDbType.VarChar, 200).Value = Fullname;
       -- open connection, execute query, close connection
       conn.Open();
       int rowsAffected = cmd.ExecuteNonQuery();
       conn.Close();
   }

当然,对于参数,我只能猜测它们是什么数据类型 - 您可能需要调整它!另外:SqlConnection对象的构造函数中的连接字符串当然需要适应您的需求 - 同样,我只是猜测它可能是什么样子 - 根据需要进行调整!

您尚未连接到数据库,也尚未执行该命令。

下面是来自 MSDN 的示例:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection%28v=vs.110%29.aspx

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}

应提供连接字符串,具体取决于数据库类型和位置。

您需要首先定义一个sqlconnection,否则.net框架如何知道要使用哪个数据库,它的位置等。

sqlconnection con;
sqlcommand cmd;
con = new sqlconection("your connection string goes here");
cmd = new sql command("your query", con); //we are telling cmd that you need to
// fire the query using con which is a connection object which ultimately
// contains database connection information
con.open();
cmd.ExecuteNonQuery();
con.close();

我认为这里不需要数据适配器来插入数据。执行"选择"查询时通常使用数据适配器。数据适配器通常填充数据集。

有关创建连接字符串的详细信息,请访问以下链接:-

如何在 asp.net c# 中创建连接字符串

        cmd = new SqlCommand("INSERT INTO UserInfo (ID, Pass, Email, BDYear, BDMonth, BDDay, FullName) VALUES ("+ID+", "+Pass+", "+Email+","+BDYear+", "+BDMonth+", "+BDDay+", "+FullName+")");

这可能有效,但我建议使用带有参数的 SqlCommand。

这篇文章可以帮助你。

http://msdn.microsoft.com/tr-tr/library/system.data.sqlclient.sqlcommand.parameters(v=vs.110(.aspxhttp://www.csharp-station.com/Tutorial/AdoDotNet/lesson06