benyamin mirzai
شنبه 11 آبان 1387, 09:48 صبح
سلام من می خواهم فایلی از نوع text را بخواند مقادیر ان که با tab از هم جدا شده اند را از هم جدا کند و بعد مقادیر ان را در sql بنویسد ابتدا ان فایل را browse می کنم ان را باز کرده با split جدا کرده در ارایه می ریزم و بعد در sql ذخیره می کنم به صورت زیر
public partial class _Default : System.Web.UI.Page
{
SqlCommand myCom = new SqlCommand("insert into Personnel(Time,Door,Item,Events,Persons)values (@p1,@p2,@p3,@p4,@p5)", new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]));
protected void upbtn_Click(object sender, EventArgs e)
{
myCom.Connection.Open();
//..........................
string file = ExFileUp.PostedFile.FileName;
StreamReader FileReader;
FileReader = File.OpenText(file);
string fileread;
while (FileReader.EndOfStream==false)
{
fileread = FileReader.ReadLine();
string x;
x = fileread;
string[] xarray;
xarray = x.Split('\t');
for (int i = 0; i < 5; i++)
{
Label1.Text = xarray[i].ToString();
if (i==0)
myCom.Parameters.Add("@p1", xarray[0].ToString());
if(i==1)
myCom.Parameters.Add("@p2", xarray[1].ToString());
if(i==2)
myCom.Parameters.Add("@p3", xarray[2].ToString());
if(i==3)
myCom.Parameters.Add("@p4", xarray[3].ToString());
if(i==4)
myCom.Parameters.Add("@p5", xarray[4].ToString());
}
myCom.ExecuteNonQuery();
xarray.Clone();
}
myCom.Connection.Close();
}
ولی مشکل اینجاست که هنگام نوشتن در sql وقتی نوبت به خط دوم می رسد @p1 را نمی شناسد چون با زدن دکمه connenction.open می شود و وقتی برای بار دوم وارد while می شود دیگر p ها را نمی شناسد
به چه صورت بنویسم ؟
public partial class _Default : System.Web.UI.Page
{
SqlCommand myCom = new SqlCommand("insert into Personnel(Time,Door,Item,Events,Persons)values (@p1,@p2,@p3,@p4,@p5)", new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]));
protected void upbtn_Click(object sender, EventArgs e)
{
myCom.Connection.Open();
//..........................
string file = ExFileUp.PostedFile.FileName;
StreamReader FileReader;
FileReader = File.OpenText(file);
string fileread;
while (FileReader.EndOfStream==false)
{
fileread = FileReader.ReadLine();
string x;
x = fileread;
string[] xarray;
xarray = x.Split('\t');
for (int i = 0; i < 5; i++)
{
Label1.Text = xarray[i].ToString();
if (i==0)
myCom.Parameters.Add("@p1", xarray[0].ToString());
if(i==1)
myCom.Parameters.Add("@p2", xarray[1].ToString());
if(i==2)
myCom.Parameters.Add("@p3", xarray[2].ToString());
if(i==3)
myCom.Parameters.Add("@p4", xarray[3].ToString());
if(i==4)
myCom.Parameters.Add("@p5", xarray[4].ToString());
}
myCom.ExecuteNonQuery();
xarray.Clone();
}
myCom.Connection.Close();
}
ولی مشکل اینجاست که هنگام نوشتن در sql وقتی نوبت به خط دوم می رسد @p1 را نمی شناسد چون با زدن دکمه connenction.open می شود و وقتی برای بار دوم وارد while می شود دیگر p ها را نمی شناسد
به چه صورت بنویسم ؟