首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对OleDb数据库的多个用户输入

对OleDb数据库的多个用户输入
EN

Stack Overflow用户
提问于 2017-02-04 21:23:18
回答 2查看 40关注 0票数 0

我有一个任务,添加尽可能多的用户访问数据库的用户想要的。(输入要添加的人员数量)。

现在,我的代码只添加了我编写的第一个。我需要如何更改代码,才能添加下一个人,如果我输入10个人,它将添加所有人?

代码语言:javascript
运行
复制
 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();
EN

Stack Overflow用户

发布于 2017-02-04 21:28:57

只需将命令及其执行移动到循环内,而连接应在循环外创建和打开

代码语言:javascript
运行
复制
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)。同样,正如下面的注释所指出的,您可以在循环外创建参数,然后在循环内更改它们的值(从而避免为每个循环创建命令和参数)。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42040889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档