我已经做了一段时间的学校作业,我注意到我需要一些帮助来完成它。具体来说,我需要帮助将FlatFile.txt转换/导入到我的规范化数据库中。
我的flatfile有很多行,每行有很多属性用'|分隔”。
如何添加每一行并将该行中的每个元素添加到我的DataBase中的唯一对应属性(假设我已经建立了与我的数据库的连接)?
我知道我可能需要使用以下内容: 提示*:comm.Parameters.AddWithValue(“@ FirstName”,firstname); 如何使.txt文件的第一个元素等于firstname?
我希望这是有道理的。
这是我到目前为止所做的:
string [] lines = File.ReadAllLines(pathString);
string[][] myRecords = new string[lines.Count() + 1][];
int k = 1;
foreach (var line in lines)
{
var values = line.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 1; i < values.Length; i++)
{
if (myRecords[k] == null)
{
myRecords[k] = new string[values.Length + 1];
}
myRecords[k][i] = values[i];
Console.WriteLine(myRecords[k][i]);
}
k++;
答案 0 :(得分:0)
您应该能够将一行中的每个项目添加到数据库中的相应名称,方法是使用它在行中的位置;类似的东西:
comm.Parameters.AddWithValue("@FirstName", values[i]);
(注意:此处所需的确切语法将取决于您使用的内容,但我假设您能够将该部分计算出来。)
...但是,对于类似的工作,您将要更改解析该行的代码并删除StringSplitOptions.RemoveEmptyEntrie
,因为这将影响每行的数据部分的结果数量。
一个例子:
var line = "one|two|||five|six";
// Will produce: {one, two, five, six}
var nonEmptyValues = line.Split(new char[] { '|' },
StringSplitOptions.RemoveEmptyEntries);
// Will produce {one, two, null, null, five, six}
var allValues = line.Split(new char[] { '|' });
后者将允许生成的数组(代码中的values
)始终包含正确数量的&#34;列&#34;,这将使位置到DB列名称的映射更容易。