Как импортировать данные из файла TXT в базу данных Access - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь импортировать данные из текстового файла в базу данных Access, но она импортирует только первую запись файла.Вот код

Я также попробовал более сложный метод, сохранив данные в 3 массивах (потому что у меня есть 3 столбца), и я проверил их, и они имели правильные данные, но когда я вставляю их в доступ, они импортируют толькопервая запись 6 раз (это то, сколько записей у меня есть в текстовом файле)

OleDbCommand cmd = new OleDbCommand("INSERT into Utilizatori (Nume, Parola, Email) values(@nume, @parola, @email)", conn);
string[] values;
foreach (string line in File.ReadLines(@"D:\vlad\c#\centenar\Centenar\bin\Debug\utilizatori.txt"))
{
    values = line.Split('*');
    cmd.Parameters.Add("@nume", OleDbType.VarChar).Value = values[0];
    cmd.Parameters.Add("@parola", OleDbType.VarChar).Value = values[1];
    cmd.Parameters.Add("@email", OleDbType.VarChar).Value = values[2];
    cmd.ExecuteNonQuery();
}

1 Ответ

1 голос
/ 08 апреля 2019

В цикле вы непрерывно добавляете параметры в команду. Таким образом, после первого цикла команда имеет 3 параметра, после второго у вас есть 6 параметров и далее, но когда команда выполняется, учитываются только первые три, и, таким образом, вы заканчиваете вставку всегда одинаковых значений.

Вы можете очистить набор параметров в каждом цикле с помощью

cmd.Parameters.Clear();

Но лучше определить параметры вне цикла только один раз, а внутри цикла вы можете просто заменить значения.

OleDbCommand cmd = new OleDbCommand("INSERT into Utilizatori (Nume, Parola, Email) values(@nume, @parola, @email)", conn);
cmd.Parameters.Add("@nume", OleDbType.VarChar);
cmd.Parameters.Add("@parola", OleDbType.VarChar);
cmd.Parameters.Add("@email", OleDbType.VarChar);
string[] values;
foreach (string line in File.ReadLines(@"D:\vlad\c#\centenar\Centenar\bin\Debug\utilizatori.txt"))
{
    values = line.Split('*');
    cmd.Parameters["@nume"].Value = values[0];
    cmd.Parameters["@parola"].Value = values[1];
    cmd.Parameters["@email"].Value = values[2];
    cmd.ExecuteNonQuery();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...