sql—如何在c中从arraylist向数据库插入数据#

hs1rzwqc  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(294)

我以“学生”的身份上课。我已经完成了xml解析,然后我使用这个类将xml元素记录到arraylist中。然后我想将arraylist中的元素插入到数据库中。我该怎么做?

int id=1;
            Arraylist arylist=new Arraylist();
            xmlparse.Load(Url);
            XmlNodeList nodes = xmlparse.SelectNodes("...");//Url nodes

            foreach (XmlNode item in nodes)
            {
                XmlNode innode = item.SelectSingleNode("name");

                string xml_name = innode != null ? innode.InnerText : "";

                innode = item.SelectSingleNode("parts");
                string xml_parts = innode != null ? innode.InnerText : "";

...

arylist.Add(new Student(id, xml_name, xml_parts...));
                id++;

            }

我试过做这样的事。但我做不到。有人能帮我吗

foreach (int i in arylist)
            {
                var mycommand = new OleDbCommand("insert into Student (name,parts) values (@name,@parts)", connection);
                mycommand.Parameters.AddWithValue("@name",i dont know what i should write here);
            }
inb24sb2

inb24sb21#

您的代码需要如下所示:

using(mycommand = new OleDbCommand("insert into Student (name,parts) values (@name,@parts)", connection)){

  mycommand.Parameters.AddWithValue("@name","dummy name");
  mycommand.Parameters.AddWithValue("@parts","dummy part"); //assuming parts is a string - you haven't made any code to parse it

  foreach (object o in arylist)
  {
    Student s = (Student)o; //this isn't needed if you use a List<Student>..

    mycommand.Parameters["@name"].Value = s.Name; //or whatever your name property is
    mycommand.Parameters["@parts"].Value = s.Parts; //or whatever your parts property is

    mycommand.ExecuteNonQuery();
  }
}

我们所有的学生都在一个数组列表中(不是最好的选择;但每个人都坚持要告诉你,所以我不会重复他们的话)所以我们应该:
创建一个带有连接的命令(我假设您 Open() 把它放在别处)。我们在一个使用块中执行此操作,这样c#将在我们之后进行清理-处理db内容总是很好的。记住对你的连接也要这样做
在命令中添加一些伪参数-我们将在一分钟内输入实际值
开始循环数组列表,一次抽出一个学生
.. 将其从对象转换为学生,以便更容易使用,然后
.. 把学生的价值观放进去,然后
.. 执行查询
请阅读以下内容,以指导您未来的编码:https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/
如果addwithvalue用于where子句中没有的参数,我个人不会对它有太大的异议,但您至少应该了解它的作用以及它可能导致的麻烦

相关问题