将数据插入数据库,无法弄清楚
本文关键字:弄清楚 数据库 数据 插入 | 更新日期: 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ònnection
和SqlCommand
放入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