Как проверить, существуют ли определенные c данные в текстовом файле, прежде чем вставлять их в таблицу SQL базы данных? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть текстовый файл Employee employee.txt, в котором есть некоторые данные.

Например:

empID, FirstName, LastNme

Я хочу прочитать файл, получить от него empId и передать его функции, чтобы проверить, существует ли уже empId в SQL таблица базы данных.

Вот моя функция:

public bool DoesEmployeeExist(int empId)
{
    bool ret;

    try
    {
        string sql = "Select empId from Employees where empId = '" + empId + "'";

        Object obj = _idac.GetSingleAnswer(sql);

        if (obj != null)
        {
            ret = true;
        }
        else
        {
            ret = false;
        }
    }
    catch (Exception)
    {
        throw;
    }

    return ret;
}

Как мне получить empId из файла?

И как вставить файл в SQL таблица базы данных, если emptId еще нет в ней?

Должен ли я передать файл employee.txt в виде строки в подобную функцию и использовать Bulk Insert для добавления данных в базу данных:

public void InsertOrUpdateEmployee(string employees)
{
    string sql = "BULK INSERT Employee FROM '" + employees + "'" +
                 " WITH(FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')";
}

Или передать как

List<Employees> employee = new <Employees>();

1 Ответ

0 голосов
/ 04 мая 2020

Исходя из вашей проблемы, вы хотели бы вставить empId из файла в базу данных, если

empId отсутствует в базе данных.

Вы можете использовать следующий код, чтобы получить его.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            List<Employee> list = new List<Employee>();
            var result = File.ReadAllLines("D:\\new.txt");
            string[] s = { "," };
            foreach (var item in result)
            {
                string[] arr = item.Split(s, StringSplitOptions.RemoveEmptyEntries);
                list.Add(new Employee { EmpId = Convert.ToInt32(arr[0]), FirstName = arr[1], LastName = arr[2] });
            }
            foreach (Employee item in list)
            {
                bool t = DoesEmployeeExist(item.EmpId);
                if(t==true)
                {
                    MessageBox.Show("Database already has the record "+item.EmpId);
                }
                else
                {
                    string sql = string.Format("insert into Employees (empID,FirstName,LastName)values({0},'{1}','{2}')", item.EmpId, item.FirstName, item.LastName);
                    string connstring = @"";
                    SqlConnection connection = new SqlConnection(connstring);
                    connection.Open();
                    SqlCommand command = new SqlCommand(sql, connection);
                    command.ExecuteNonQuery();
                    connection.Close();

                }
            }
            MessageBox.Show("Test");
        }

        public bool DoesEmployeeExist(int empId)
        {

            try
            {
                string sql = "Select empID from Employees where empID = '" + empId + "'";
                string connstring = @"";
                SqlConnection connection = new SqlConnection(connstring);
                connection.Open();
                SqlCommand command = new SqlCommand(sql,connection);
                SqlDataReader dr = command.ExecuteReader();
                if(dr.HasRows)
                {
                    return true;
                }
                else
                {
                    return false;
                }

            }
            catch (Exception)
            {
                throw;
            }


        }
    }
    public class Employee
    {
     public int EmpId { get; set; }

     public string FirstName { get; set; }

     public string LastName { get; set; }

    }

Следующим является мой текстовый файл:

enter image description here

Следующим является запись моей базы данных:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...