我想将某些文本保存到我的数据库中。它应该只是阅读name=joe
。
joe
的条目
这是我的文字文件这样的话
name=joe|surname=clark|phone=23132131|address=jdsakldjakldja|date=11.02.2015 14:30:45
name=betty|surname=ugly|phone=32112121|address=dsadaewqeqrsa|date=11.02.2015 14:30:45
这是我的代码
string connStr = @"Data Source=ANLZ\SQLEXPRESS;Initial Catalog=testdb; Trusted_Connection=True;";
string createQuery = "INSERT INTO tbl_test(name,surname,phone,address,date) VALUES(@name,@surname,@phone,@address,@date)";
SqlConnection conn;
SqlCommand cmd;
string[] importfiles = Directory.GetFiles(@"C:\Users\An\Desktop\", "test.txt");
using (conn)
{
using (cmd = new SqlCommand(createQuery, conn))
{
cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50);
cmd.Parameters.Add("@surname", SqlDbType.NVarChar, 50);
cmd.Parameters.Add("@phone", SqlDbType.NVarChar, 50);
cmd.Parameters.Add("@address", SqlDbType.NVarChar, 200);
cmd.Parameters.Add("@date", SqlDbType.DateTime);
foreach (string importfile in importfiles)
{
string[] allLines = File.ReadAllLines(importfile);
baglanti.Open();
for (int index = 0; index < allLines.Length; index++)
{
string[] items = allLines[index].Split(new char[] { '|' });
//new char[] {'|'}
cmd.Parameters["@name"].Value = items[0];
cmd.Parameters["@surname"].Value = items[1];
cmd.Parameters["@phone"].Value = items[2];
cmd.Parameters["@address"].Value = items[3];
cmd.Parameters["@date"].Value = items[4];
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
}
我不想像那样插入&#34; name = joe&#34;。没有&#34; name =&#34;我怎么能保存?字?
答案 0 :(得分:2)
使用另一个分裂:
string[] items = allLines[index]
.Split(new []{ '|' })
.Select(i => i.Split(new []{ '=' })[1])
.ToArray();
//items[0] = "joe"
//items[1] = "clark"
//etc
Select
将对每个项目采取行动,在=
上再次拆分,并将其返回的第二个项目
答案 1 :(得分:0)
首先拆分'|',然后拆分'='。这将使您能够获得这些价值。
您可以对items []数组进行拆分,如下所示:
string[] val = items[0].Split(new char[] { '=' });
cmd.Parameters["@name"].Value = val[1];
答案 2 :(得分:0)
您可以像删除“|”一样使用.split()
来自输入
答案 3 :(得分:0)
在您第一次分割后,您最终会使用"name=joe"
等项目。您需要在Split()
上执行另一个'='
并获取第二部分,即值joe
。
在你分手后立即把它放好,你就没事了:
items = items.Select(x => x.Split('=')[1]).ToArray();