У меня есть текстовый файл csv, который пользователь просматривает.
Когда пользователь получает текстовый файл, первая строка должна быть прочитана, а второй элемент должен быть записан в Sql Table
.
Текстовый файл большой, но первые две строки выглядят следующим образом:
students_head 201502
student_id code amount
И у меня есть таблица Sql со следующими столбцами:
student_id code amount month
Что мне нужно сделать, так это получить месяц, который находится в первой строке текстового файла и заполнить его каждый месяц в столбцах для всех строк.
выглядеть так
student_id code amount month
1234 mt11 1000 201502
1235 mt11 25000 201502
1236 ds33 7800 201502
Код, который у меня есть на данный момент, выглядит следующим образом:
openFileDialog1.Filter = ".csv file|*.csv*";
openFileDialog1.FilterIndex = 1;
DialogResult result = openFileDialog1.ShowDialog();
if (result == DialogResult.Yes)
{
String file = openFileDialog1.FileName;
btnNext.Enabled = true;
try
{
string connect = "Data Source=BRIAN-PC\\SQLEXPRESS; Initial Catalog=PSAHoldings; user id =sa; Password=kagiso";
string table = "IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='t_original' AND xtype='U')" +
"CREATE TABLE t_original (" +
"empId varChar(10) NOT NULL PRIMARY KEY," +
"paycode varChar(10) NOT NULL," +
"amount int NOT NULL," +
"month int NOT NULL,"+
")";
SqlConnection con = new SqlConnection(connect);
con.Open();
SqlCommand createTable = new SqlCommand(table, con);
createTable.ExecuteNonQuery();
String BulkInsert = "BULK INSERT t_original FROM_" +
file + "_WITH (--FIRSTROW = 3," +
"FIELDTERMINATOR = '|'," +
"ROWTERMINATOR = '\\n')";
SqlCommand bulkCmd = new SqlCommand(BulkInsert, con);
bulkCmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString(), "Exception Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Просто прочитайте это -
string month = string.empty;
using(var reader = new StreamReader(file))
{
string firstLine = reader.ReadLine();
string[] splitedLine = firstLine.Split(';'); // or whatever delimiter You used
month = splittedLine[1];
}