I an trying to do a simple task of reading from one table "tab2" in a database->save to xml and then reload it into table "tab1" both have the same structure, I asked previously and received the following code as an answer.
I am having problems I am now getting the database filed ONCE per item but with a date time stamp I don't think its writing the XML from reading the database properly I am running it twice to get the schema and once for data.
    private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\temp\\names.accdb;Persist Security Info=False");
            using (OleDbConnection Conn = new OleDbConnection(ConnString))
            {
                //Conn.Close();//severl times connection has been open
                Conn.Open();
                DataSet ds = new DataSet();
                ds.ReadXml(@"c:\\temp\\tab2.xml");
                OleDbCommand cmd = new OleDbCommand();
                //OleDbCommand cmd1 = new OleDbCommand();
                DataTable dtCSV = new DataTable();
                dtCSV = ds.Tables[0];
                cmd.Connection = Conn;
                cmd.CommandType = CommandType.Text;
                //cmd.Parameters.Add(new OleDbParameter("@field1", Convert.ToString(dtCSV.Rows[0][0])));// = 1234;
                //cmd1.Connection = Conn;
                for (int row = 0; row <= dtCSV.Rows.Count - 1; row++)
                {
                    //for (int col = 0; col < dtCSV.Columns.Count - 1; col++)
                    //{
                    //    //cmd.CommandText = ("INSERT INTO  tab1 ( field1, field2) VALUES (dtCSV.Rows ,dtCSV.Columns)");
                    //}
                    cmd.Parameters.Clear();
                    if (dtCSV.Columns.Count > 1)
                    {
                        //command.Parameters.Add(new OleDbParameter("@EMPID", Convert.Tostring(empsplitIt[1])));
                        //cmd.Parameters.Add(dtCSV.Rows[row][0]);
                        cmd.Parameters.Add(new OleDbParameter("@Field1", Convert.ToString(dtCSV.Rows[row][0])));
                        cmd.Parameters.Add(new OleDbParameter("@dtCSV", Convert.ToString(dtCSV.Rows[row][1])));
                        cmd.CommandText = ("INSERT INTO  tab1 ( field1, field2) VALUES (? , ?)");
                        cmd.ExecuteNonQuery();
                    }
                }
                //Conn.Close();
            }
        }
        catch (Exception ex)
        {
            richTextBox1.Text = richTextBox1.Text + "\n Error " + ex + "\n"; ;
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        {
            string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\temp\\names.mdb;Persist Security Info=False");
            using (OleDbConnection Conn = new OleDbConnection(ConnString))
            {
                string strSql = "Select * from Table1"; //only launch in main
                richTextBox1.Text = richTextBox1.Text + " Querying Launch Parameters";
                try
                {
                    OleDbConnection con = new OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0; Data Source = C:\\temp\\names.mdb; Persist Security Info = False");
                    OleDbCommand cmd = new OleDbCommand(strSql, con);
                    con.Open();
                    cmd.CommandType = CommandType.Text;
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "fname,sname");
                    // Extract data set to XML file 
                    ds.WriteXml(@"c:\\temp\\tab2.xml", XmlWriteMode.WriteSchema);
                    ds.WriteXml(@"c:\\temp\\tab2.xml");
                }
                catch (Exception ex)
                {
                    richTextBox1.Text = richTextBox1.Text + "\n Error " + ex + "\n"; ;
                }
            }
        }
    }
}
I find from my code that there is two different connection strings with in it when I putin the corect spelling correcting these it now fails on the line
  dtCSV = ds.Tables[0];
with this
Error System.IndexOutOfRangeException: Cannot find table 0. at System.Data.DataTableCollection.get_Item(Int32 index) at WindowsFormsApp8.Form1.button1_Click(Object sender, EventArgs e) in
Code:
private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\temp\\names.mdb;Persist Security Info=False");
            using (OleDbConnection Conn = new OleDbConnection(ConnString))
            {
                //Conn.Close();//severl times connection has been open
                Conn.Open();
                DataSet ds = new DataSet();
                ds.ReadXml(@"c:\\temp\\tabel2.xml");
                OleDbCommand cmd = new OleDbCommand();
                //OleDbCommand cmd1 = new OleDbCommand();
                DataTable dtCSV = new DataTable("tabel1");
                dtCSV = ds.Tables[0];
                cmd.Connection = Conn;
                cmd.CommandType = CommandType.Text;
                //cmd.Parameters.Add(new OleDbParameter("@field1", Convert.ToString(dtCSV.Rows[0][0])));// = 1234;
                //cmd1.Connection = Conn;
                for (int row = 0; row <= dtCSV.Rows.Count - 1; row++)
                {
                    //for (int col = 0; col < dtCSV.Columns.Count - 1; col++)
                    //{
                    //    //cmd.CommandText = ("INSERT INTO  tab1 ( field1, field2) VALUES (dtCSV.Rows ,dtCSV.Columns)");
                    //}
                    cmd.Parameters.Clear();
                    if (dtCSV.Columns.Count > 1)
                    {
                        //command.Parameters.Add(new OleDbParameter("@EMPID", Convert.Tostring(empsplitIt[1])));
                        //cmd.Parameters.Add(dtCSV.Rows[row][0]);
                        cmd.Parameters.Add(new OleDbParameter("@field1", Convert.ToString(dtCSV.Rows[row][0])));
                        cmd.Parameters.Add(new OleDbParameter("@field2", Convert.ToString(dtCSV.Rows[row][1])));
                        cmd.CommandText = ("INSERT INTO  tabel1 ( field1, field2) VALUES (? , ?)");
                        cmd.ExecuteNonQuery();
                    }
                }
                //Conn.Close();
            }
        }
        catch (Exception ex)
        {
            richTextBox1.Text = richTextBox1.Text + "\n Error " + ex + "\n"; ;
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        {
            string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\temp\\names.mdb;Persist Security Info=False");
            using (OleDbConnection Conn = new OleDbConnection(ConnString))
            {
                string strSql = "Select * from tabel2"; //only launch in main
                richTextBox1.Text = richTextBox1.Text + " Querying Launch Parameters";
                try
                {
                    OleDbConnection con = new OleDbConnection(ConnString);
                    OleDbCommand cmd = new OleDbCommand(strSql, con);
                    con.Open();
                    cmd.CommandType = CommandType.Text;
                    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "fname,sname");
                    // Extract data set to XML file 
                    ds.WriteXml(@"c:\\temp\\tabel2.xml", XmlWriteMode.WriteSchema);
                    ds.WriteXml(@"c:\   \temp\\tabel2.xml");
                }
                catch (Exception ex)
                {
                    richTextBox1.Text = richTextBox1.Text + "\n Error " + ex + "\n"; ;
                }
            }
        }
    }
}
 
    