Динамически индексировать свойство класса из строки - PullRequest
0 голосов
/ 16 ноября 2018

Я работаю над своего рода инструментом миграции баз данных.Моя компания, занимающаяся обучением программированию, полностью переделывает свою базу данных, и я создаю приложение, которое может импортировать файлы CSV, беря только необходимые данные и помещая их в базу данных.Я хочу сделать это повторно используемым, насколько это возможно, и не нужно создавать новые объекты для каждого типа данных каждый раз, когда я импортирую новый CSV.Я работаю над перемещением этого (что у меня уже есть) в приложение Windows Forms, которое позволит мне импортировать файл CSV, а затем перечислить свойства по порядку, затем нажать кнопку, чтобы обработать их, и после этого иметь базу данныхТаблица построена с соответствующей информацией.

Если у вас есть какие-либо советы о том, как это сделать, пожалуйста, дайте мне знать.

static void Main(string[] args)
{
    var count = 0;
    using(var reader = new StreamReader(@"C:\Users\Tim\Documents\FullData.csv"))
    {
        while (!reader.EndOfStream)
        {
            var str = reader.ReadLine();
            count = count + 1;
            var IndividualProperties = str.Split(',');
            StudentEntity StudentData = new StudentEntity()
            {
                Id = count,
                FirstName = IndividualProperties[1],
                LastName = IndividualProperties[0],
                Email = IndividualProperties[2],
                PhoneNumber = IndividualProperties[3],
                Address = IndividualProperties[4],
                City = IndividualProperties[5],
                Gender = IndividualProperties[8]
            };
            AddUserToDb(StudentData, "StudentData");
            Console.WriteLine(str);
        }
    }

    Console.WriteLine("Total Students Saved: " + count);
}

static void AddUserToDb(StudentEntity Object, string DatabaseName)
{
    using (SqlConnection connection = new SqlConnection(ConnectionString))
    {
        var commandString = "INSERT INTO " + DatabaseName + "(FirstName,LastName,Email,PhoneNumber,Address,City,Gender,Id) VALUES(@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8)";
        connection.Open();
        try
        {
            using (SqlCommand command = new SqlCommand(commandString, connection))
            {
                command.Parameters.Add("@p1", SqlDbType.Text).Value = Object.FirstName;
                command.Parameters.Add("@p2", SqlDbType.Text).Value = Object.LastName;
                command.Parameters.Add("@p3", SqlDbType.Text).Value = Object.Email;
                command.Parameters.Add("@p4", SqlDbType.Text).Value = Object.PhoneNumber;
                command.Parameters.Add("@p5", SqlDbType.Text).Value = Object.Address;
                command.Parameters.Add("@p6", SqlDbType.Text).Value = Object.City;
                command.Parameters.Add("@p7", SqlDbType.Text).Value = Object.Gender;
                command.Parameters.Add("@p8", SqlDbType.Int).Value = Object.Id;
                command.ExecuteNonQuery();
            }
        }
        catch
        {
            Console.WriteLine("Something went wrong");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...