我有一个任务,添加尽可能多的用户访问数据库的用户想要的。(输入要添加的人员数量)。
现在,我的代码只添加了我编写的第一个。我需要如何更改代码,才能添加下一个人,如果我输入10个人,它将添加所有人?
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"dbs.accdb\"";
OleDbConnection con = new
OleDbConnection(ConnectionString);
OleDbCommand addCmd = new OleDbCommand("INSERT INTO PERSON(Name, LastName) VALUES(?,?)", con);
Console.Write("A number of persons to add: ");
int number= Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < number; i++)
{
Console.Write("Name:");
string name= Console.ReadLine();
addCmd.Parameters.Add(new OleDbParameter("@Name", name));
Console.Write("Last Name:");
string lastName= Console.ReadLine();
addCmd.Parameters.Add(new OleDbParameter("@LastName", lastName));
}
con.Open();
addCmd.ExecuteNonQuery();
con.Close();发布于 2017-02-04 21:28:57
只需将命令及其执行移动到循环内,而连接应在循环外创建和打开
string cmdText = "INSERT INTO PERSON(Name, LastName) VALUES(?,?)";
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"dbs.accdb\"";
using(OleDbConnection con = new OleDbConnection(ConnectionString))
using(OleDbCommand addCmd = new OleDbCommand(cmdText, con))
{
con.Open();
addCmd.Parameters.Add("@Name", OleDbType.VarWChar);
addCmd.Parameters.Add("@LastName", OleDbType.VarWChar);
Console.Write("A number of persons to add: ");
int number= Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < number; i++)
{
{
Console.Write("Name:");
string name= Console.ReadLine();
addCmd.Parameters["@Name"].Value = name;
Console.Write("Last Name:");
string lastName= Console.ReadLine();
addCmd.Parameters["@LastName"].Value = lastName;
addCmd.ExecuteNonQuery();
}
}
}注意,所有可处理的对象(连接和命令)都被封装在一个using语句中,以便在处理完它时得到适当的处理(对于连接,这也意味着您不需要调用Close)。同样,正如下面的注释所指出的,您可以在循环外创建参数,然后在循环内更改它们的值(从而避免为每个循环创建命令和参数)。
发布于 2017-02-04 21:39:30
string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\"dbs.accdb\"";
OleDbConnection con = new OleDbConnection(ConnectionString);
Console.Write("A number of persons to add: ");
int number= Convert.ToInt32(Console.ReadLine());
for (int i = 0; i < number; i++)
{
OleDbCommand addCmd = new OleDbCommand("INSERT INTO PERSONA(Name, LastName) VALUES(?,?)", con);
con.Open();
Console.Write("Name:");
string name= Console.ReadLine();
addCmd.Parameters.Add(new OleDbParameter("@Name", name));
Console.Write("Last Name:");
string lastname= Console.ReadLine();
addCmd.Parameters.Add(new OleDbParameter("@LastName", lastname));
Console.WriteLine();
addCmd.ExecuteNonQuery();
con.Close();
}我把它改成这样,现在它可以工作了,谢谢你的回复
https://stackoverflow.com/questions/42040889
复制相似问题