Basically, what Alex.K comment say:
using (StreamReader sr = new StreamReader(@"D:\test1.txt"))
{
while (sr.Peek() >= 0)
{
var line = sr.ReadLine();
var items = line.Split(new[] { '\t', '\n' }).ToArray();
if (items.Length != 3)
continue;
var Name = items[0].ToString();
var Email = items[1].ToString();
var Pwd = items[2].ToString();
cmd.CommandText = "insert into Employees values('" + Name + "','" + Email + "','" + Pwd + "')";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
You don't need foreach
inside peek check loop, just read a line.
Here is a typical use from MSDN, which is very clear of how to read lines:
using (StreamReader sr = new StreamReader(path))
{
while (sr.Peek() >= 0)
{
Console.WriteLine(sr.ReadLine());
}
}
Edit
To avoid famous SQL injection vulnerability
, deal with parameters using Parameters
:
// this is baaaaad
cmd.CommandText = "insert into Employees values('" + Name + "','" + Email + "','" + Pwd + "')";
// will become
cmd.CommandText = "insert into Employees values(@Name, @Email, @Pwd)";
cmd.Parameters["@Name"].Value = Name;
cmd.Parameters["@Email"].Value = Email;
cmd.Parameters["@Pwd"].Value = Pwd;
// somewhere before, where you create command
cmd.Parameters.Add("@Name", type);
cmd.Parameters.Add("@Email", type);
cmd.Parameters.Add("@Pwd", type);