#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
выше текстовый формат файла. здесь # определите название категории продукта. 'Cola 2' определите название продукта и цену. Где название продукта — Cola, а цена — 2. Теперь, как добавить эти данные в мою таблицу продуктов. Я использую С# и SQL. Спасибо.
Вместе с проблемой следует включите код, который у вас есть до этого момента (приложите некоторые усилия, чтобы ответить на вашу проблему/вопрос, поскольку Переполнение стека не является службой написания кода). После проводить больше исследований, если у вас есть проблема, вы можете отпишись что пробовал с четкое объяснение того, что не работает и предоставлением минимальный воспроизводимый пример. Я предлагаю прочитать Как задать хороший вопрос и Написание идеального вопроса. Также обязательно возьмите тур.
Пробовал этот social.msdn.microsoft.com/Forums/vstudio/en-US/…
Используйте следующий код для анализа текстового файла, а затем используйте строку для помещения в базу данных.
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();
}
}
}
Вы можете использовать что-то подобное для записи в базу данных. Просто создайте свое 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();
}
}
Вы можете попробовать что-то вроде этого:
Регулярное выражение: (.*?)\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);
}
Что вы пробовали?