Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Parameters.AddWithValue出现问题并在DataTable中循环_C#_Datatable - Fatal编程技术网

C# Parameters.AddWithValue出现问题并在DataTable中循环

C# Parameters.AddWithValue出现问题并在DataTable中循环,c#,datatable,C#,Datatable,我有一个如下所示的数据表: [0] [1] "Z12" "Company A" "A32" "Company B" "K54" "Company C" "Z12" "Company A" "Z12" "Company A" "Z12" "Company A" OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\myDB.ac

我有一个如下所示的数据表:

[0]    [1]
"Z12"  "Company A"
"A32"  "Company B"
"K54"  "Company C"
"Z12"  "Company A"
"Z12"  "Company A"
"Z12"  "Company A"
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\myDB.accdb");

OleDbCommand cmd = new OleDbCommand();

cmd.Connection = myConnection;
cmd.CommandType = CommandType.Text;

myConnection.Open();

for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
    cmd.Parameters.Clear(); 
    cmd.CommandText = "INSERT INTO xCARRIER (CARRIER_ID, CARRIER_NAME) VALUES (@p1, @p2)";

    cmd.Parameters.AddWithValue("@p1", dt.Rows[i].ItemArray.GetValue(0));
    cmd.Parameters.AddWithValue("@p2", dt.Rows[i].ItemArray.GetValue(1));

    cmd.ExecuteNonQuery();
}

myConnection.Close();
我正在尝试遍历这些行,并使用以下代码将它们添加到Access表中:

OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\myDB.accdb");

OleDbCommand cmd = new OleDbCommand();

cmd.Connection = myConnection;
cmd.CommandType = CommandType.Text;

myConnection.Open();

for (int i = 0; i <= dt.Rows.Count - 1; i++)
    {
        cmd.CommandText = "INSERT INTO xCARRIER (CARRIER_ID, CARRIER_NAME) VALUES (@p1, @p2)";

        cmd.Parameters.AddWithValue("@p1", dt.Rows[i].ItemArray.GetValue(0));
        cmd.Parameters.AddWithValue("@p2", dt.Rows[i].ItemArray.GetValue(1));

        cmd.ExecuteNonQuery();
    }

myConnection.Close();
当我一步一步地浏览代码时,它看起来像是在正确地遍历数据表。不过,我不知道为什么要将第一行添加3次。有什么想法吗


谢谢

您可以在每次迭代后清除命令参数:

 command.Parameters.Clear();
因此,您的代码如下所示:

[0]    [1]
"Z12"  "Company A"
"A32"  "Company B"
"K54"  "Company C"
"Z12"  "Company A"
"Z12"  "Company A"
"Z12"  "Company A"
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\myDB.accdb");

OleDbCommand cmd = new OleDbCommand();

cmd.Connection = myConnection;
cmd.CommandType = CommandType.Text;

myConnection.Open();

for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
    cmd.Parameters.Clear(); 
    cmd.CommandText = "INSERT INTO xCARRIER (CARRIER_ID, CARRIER_NAME) VALUES (@p1, @p2)";

    cmd.Parameters.AddWithValue("@p1", dt.Rows[i].ItemArray.GetValue(0));
    cmd.Parameters.AddWithValue("@p2", dt.Rows[i].ItemArray.GetValue(1));

    cmd.ExecuteNonQuery();
}

myConnection.Close();
OleDbConnection myConnection=new-OleDbConnection(“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\\myDB.accdb”);
OleDbCommand cmd=新的OleDbCommand();
cmd.Connection=myConnection;
cmd.CommandType=CommandType.Text;
myConnection.Open();

对于(int i=0;我这样做了。我在
cmd.ExecuteNonQuery
之后立即添加了它。谢谢!