我有一个任务,添加尽可能多的用户访问数据库的用户想要的。(输入要添加的人员数量)。
现在,我的代码只添加了我编写的第一个。我需要如何更改代码,才能添加下一个人,如果我输入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)。同样,正如下面的注释所指出的,您可以在循环外创建参数,然后在循环内更改它们的值(从而避免为每个循环创建命令和参数)。
https://stackoverflow.com/questions/42040889
复制相似问题