我必须使用 C# 将 .csv 文件导入 firebird 数据库。为此,我编写了以下代码:
private void button1_Click(object sender, EventArgs e) {
FbConnection FBConnect = new FbConnection();
FBConnect.ConnectionString = global::MTel.Properties.Settings.Default.MTelConnectionString;
string s1 = "Изходящ разговор Корпоративна група ";
string s2 = "Изходящ SMS М-Тел ";
string s3 = "Изходящ SMS Виваком ";
string s4 = "Изходящ SMS Глобул ";
string s5 = "Мобилен Интернет ";
string s6 = "Мобилен Интернет Безплатен Трафик ";
string s7 = "Мобилен Интернет Vodafone live! в портала ";
string s8 = "Допълнителни услуги ";
string s9 = "Изходящ SMS Корпоративна група ";
string s10 = "Изходящ SMS Допълнителни услуги, нормална тарифа ";
string s11 = "Изходящ разговор Безплатни разговори ";
string s12 = "Изходящ разговор Спешни номера ";
string s13 = "Изходящ разговор Корпоративна група, пренасочване ";
string s14 = "Изходящ разговор Гласова поща ";
string s15 = "Изходящ разговор Гласова поща, пренасочване ";
string s16 = "MUSICALL ";
string s17 = "Изходящ разговор Обслужване на клиенти *88 ";
string s18 = "Телевизия и видео ";
string filePath = "D:\\MTel\\Test.csv";
Records[] rec;
CsvReader csv = new CsvReader(new StreamReader(filePath), true);
int fieldCount = csv.FieldCount;
string[] headers = csv.GetFieldHeaders();
string InsertQuery = "INSERT INTO Records(Record_Number, Type_Service, Duration, Record_Price) VALUES(?, ?, ?, ?)";
FbCommand FbCom = new FbCommand(InsertQuery, FBConnect);
try {
FBConnect.Open();
while (csv.ReadNextRecord()) {
for (int i = 0; i < fieldCount; i++) {
if (csv[i].ToString() != s1 || csv[i].ToString() != s2 ||
csv[i].ToString() != s3 || csv[i].ToString() != s4 ||
csv[i].ToString() != s5 || csv[i].ToString() != s6 ||
csv[i].ToString() != s7 || csv[i].ToString() != s8 ||
csv[i].ToString() != s9 || csv[i].ToString() != s10 ||
csv[i].ToString() != s11 || csv[i].ToString() != s12 ||
csv[i].ToString() != s13 || csv[i].ToString() != s14 ||
csv[i].ToString() != s15 || csv[i].ToString() != s16 ||
csv[i].ToString() != s17 || csv[i].ToString() != s18) {
if (headers[i].ToString() == "Телефонен/Абонатен номер") {
FbCom.Parameters.AddWithValue("Record_Number", csv[i]);
FbCom.ExecuteNonQuery();
} else if (headers[i].ToString() == "Услуга и направление") {
FbCom.Parameters.AddWithValue("Type_Service", csv[i]);
FbCom.ExecuteNonQuery();
} else if (headers[i].ToString() == "Количество (сек. бр. kB.)") {
FbCom.Parameters.AddWithValue("Duration", csv[i]);
FbCom.ExecuteNonQuery();
} else if (headers[i].ToString() == "Такса (лв.)") {
FbCom.Parameters.AddWithValue("Record_Price", csv[i]);
FbCom.ExecuteNonQuery();
}
}
}
}
} catch (FbException FbEx) {
MessageBox.Show(FbEx.ToString());
} finally {
MessageBox.Show("Данни са успешно импортирани в базата данни", "Успешна операция", MessageBoxButtons.OK, MessageBoxIcon.Information);
FBConnect.Close();
}
}
}
但是对于线
FbCom.ExecuteNonQuery();
我收到 System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引。为什么会这样?