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

时间:2014-12-21 09:47:50

标签: c# sql sql-server database

我正在尝试了解如何将数据插入到我的数据库中,因此我查看了很多教程,我无法理解如何操作。一个教程让我得到了这个:

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页面中设置。

4 个答案:

答案 0 :(得分:5)

你应该尝试这样的事情:

  • 将查询语句设置为字符串
  • 将您的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对象的构造函数中的连接字符串当然需要根据您的需要进行调整 - 再次,我只是猜测它可能是什么样的 - 根据需要进行调整! / p>

答案 1 :(得分:0)

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

以下是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();
    }
}

您应该提供取决于您的数据库类型和位置的连接字符串。

答案 2 :(得分:0)

首先需要定义一个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();

我不认为此处需要数据适配器来插入数据。数据适配器通常在执行" select"查询。数据适配器通常填充数据集。

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

How to create a connection string in asp.net c#

答案 3 :(得分:-1)

        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).aspx http://www.csharp-station.com/Tutorial/AdoDotNet/lesson06