Как читать данные из текстового файла и хранить в таблице базы данных с помощью C #? - PullRequest
0 голосов
/ 09 апреля 2019
#Softdrinks
Cola 2
Sprote 3
Fant 4
Redbull 2
#Pide-Lahmacun
Pide Mozarella 12
Pide Hackfleisch 12
Pide Feta-Hackfleisch 14
Pide Spinat 13
Pide Spinat-Ei 14

выше - формат текстового файла. здесь # определить название категории продукта. «Коль 2» определяет название продукта и цену. Где имя продукта - Cola, а цена - 2. Теперь как добавить эти данные в мою таблицу продуктов. Я использую c # и SQL. Благодаря.

Ответы [ 3 ]

0 голосов
/ 09 апреля 2019

Вы можете использовать что-то подобное для записи в базу данных.Просто создайте свое соединение SQL.Я хотел бы предложить использовать структуру лица.Посмотрите на эту ссылку для структуры лица. Вставка данных с использованием модели Entity Framework

    public int InsertItem(string item1, string item2, string item3)
    {
        using (var connection = CreateDBConnection())
        using (var command = connection.CreateCommand())
        {
            command.CommandText = @"
                INSERT dbo.TableName(item1, item2, item3)
                OUTPUT Inserted.Id
                VALUES (@item1, @item2, @item3)";

            command.Parameters.Add(new SqlParameter("@item1", item1));
            command.Parameters.Add(new SqlParameter("@item2", item2));
            command.Parameters.Add(new SqlParameter("@item3", item3));

            connection.Open();
            return (int)command.ExecuteScalar();
        }
    }
0 голосов
/ 09 апреля 2019

Вы можете попробовать что-то вроде этого:

  1. Разделить на новые строки
  2. Найти подходящие строки по регулярному выражению
  3. Выберите захватgroup 1 и 2
  4. Сопоставить группы анонимному типу
  5. Создать пустую таблицу данных
  6. Заполнить таблицу данных сейчас.

Регулярное выражение: (. *?) \ S (\ d +)

Объяснение регулярного выражения:

1st Capturing Group (.*?)
.*? matches any character (except for line terminators)
*? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)

\s matches any whitespace character (equal to [\r\n\t\f\v ])

2nd Capturing Group (\d+)
\d+ matches a digit (equal to [0-9])
+ Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)

код:

string contents = File.ReadAllText(@"test.txt");

string pattern = @"(.*?)\s(\d+)";

var query = contents.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
                .Where(x => Regex.IsMatch(x, pattern))
                .Select(x => Regex.Match(x, pattern))
                .Select(x => new
                {
                    Name = x.Groups[1].Value,
                    Value = Convert.ToInt32(x.Groups[2].Value)
                });

DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("Name", Type.GetType("System.String")));
dataTable.Columns.Add(new DataColumn("Value", Type.GetType("System.Int32")));

foreach (var item in query)
{
    DataRow dr = dataTable.NewRow();
    dr["Name"] = item.Name;
    dr["job1"] = item.Value;
    dataTable.Rows.Add(dr);
}
0 голосов
/ 09 апреля 2019

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;


namespace ConsoleApplication108
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";
        static void Main(string[] args)
        {
            StreamReader reader = new StreamReader(FILENAME);

            string line = "";
            string category = "";
            string pattern = @"(?'name'.*)\s+(?'price'\d+)";
            while ((line = reader.ReadLine()) != null)
            {
                line = line.Trim();
                if (line.Length > 0)
                {
                    if (line.StartsWith("#"))
                    {
                        category = line.Substring(1);
                    }
                    else
                    {
                        Match match = Regex.Match(line, pattern);
                        string name = match.Groups["name"].Value.Trim();
                        string price = match.Groups["price"].Value.Trim();

                        Console.WriteLine("category : '{0}', name : '{1}', price : '{2}'", category, name, price);

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