C# 如何在C中从arraylist向数据库插入数据#

C# 如何在C中从arraylist向数据库插入数据#,c#,sql,arraylist,C#,Sql,Arraylist,我以“学生”的身份上课。我已经完成了xml解析,然后使用这个类将xml元素记录到arraylist中。然后我想将arraylist中的元素插入到数据库中。我该怎么做 int id=1; Arraylist arylist=new Arraylist(); xmlparse.Load(Url); XmlNodeList nodes = xmlparse.SelectNodes("...");//Url

我以“学生”的身份上课。我已经完成了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 : "";

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

   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);
            }

您的代码需要如下所示:

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();
  }
}
使用(mycommand=new-OleDbCommand(“插入到学生(名称,部分)值(@name,@parts)”,连接)){
mycommand.Parameters.AddWithValue(“@name”、“伪名称”);
mycommand.Parameters.AddWithValue(“@parts”,“dummy part”);//假设parts是字符串-您还没有编写任何代码来解析它
foreach(arylist中的对象o)
{
Student s=(Student)o;//如果使用列表,则不需要此选项。。
mycommand.Parameters[“@name”].Value=s.name;//或任何名称属性
mycommand.Parameters[“@parts”].Value=s.parts;//或任何parts属性
mycommand.ExecuteOnQuery();
}
}
我们所有的学生都在一个ArrayList(不是最好的选择;但每个人都坚持告诉你这一点,所以我不会重复他们的话),所以我们应该:

  • 创建一个带有连接的命令(我假设您将它放在别处)。我们在一个using块中完成这项工作,这样c#将在我们之后进行清理-处理DB东西总是很好的。记住对你的连接也要这样做
  • 在命令中添加一些虚拟参数-我们将在一分钟内输入真实值
  • 开始在arraylist上循环,一次抽出一个学生
    • 。。将其从对象转换为学生,以便更容易使用,然后
    • 。。将学生的价值观输入,然后
    • 。。执行查询
阅读以下内容,以指导您未来的编码:


如果AddWithValue用于WHERE子句中不包含的参数,我个人不会对它有太大的异议,但如果将
ArrayList
更改为
List
,您至少应该了解它的功能以及它可能造成的麻烦,然后在
foreach
中,可以使用
Student
而不是
int
,然后可以访问属性以添加参数值。为什么要使用
ArrayList
?由于您将获得一组
学生
,因此我建议您使用
列表
使用Arraylist没有解决方案?您可以将Arraylist项强制转换回学生,但我也会告诉您不要使用Arraylist。从c#2.0开始就没有理由使用它
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();
  }
}