CSV文件导入到SQL Server错误

时间:2013-05-27 15:25:53

标签: c# asp.net .net visual-studio-2010 csv

我正在将CSV文件导入到SQL Server

我从Internet上获得了代码..工作正常但是当我将一个额外的字段(User_Id)与该CSV文件添加到SQL时,这就是错误....我无法理解错误在哪里... ..码...                 DataTable tblReadCSV = new DataTable();

            tblReadCSV.Columns.Add("Name");
            tblReadCSV.Columns.Add("Email");
            tblReadCSV.Columns.Add("Mobile");

            tblReadCSV.Columns.Add("User_id");
            string path = System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);

            FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Email/UploadFile/" + path));
            path = Server.MapPath("~/Email/UploadFile/" + path);
            TextFieldParser csvParser = new TextFieldParser(path);
             csvParser.Delimiters = new string[] { "," };
            csvParser.TrimWhiteSpace = true;
            csvParser.ReadLine();

            while (!(csvParser.EndOfData == true))
            {
                tblReadCSV.Rows.Add(csvParser.ReadFields());
            }
            string strCon = ConfigurationManager.ConnectionStrings["con"].ConnectionString;
            string strSql = "Insert into Contacts(Name,Email,Mobile,User_id ) values(@Name,@Email,@Mobile," + UserId +")";
            SqlConnection con = new SqlConnection(strCon);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = strSql;
            cmd.Connection = con;               
            cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50, "Name");
            cmd.Parameters.Add("@Email", SqlDbType.VarChar, 50, "Email");
            cmd.Parameters.Add("@Mobile", SqlDbType.VarChar, 50, "Mobile");

            cmd.Parameters.Add("@User_id", SqlDbType.Int , UserId);

            SqlDataAdapter dAdapter = new SqlDataAdapter();
            dAdapter.InsertCommand = cmd;
            int result = dAdapter.Update(tblReadCSV);
            Label1.Text = "File successfully uploaded";

3 个答案:

答案 0 :(得分:0)

你没有说出错误信息是什么,也没有说出现在哪里,但在我看来这行

string strSql = "Insert into Contacts(Name,Email,Mobile,User_id ) values(@Name,@Email,@Mobile," + UserId +")";

应该是这样的

string strSql = "Insert into Contacts(Name,Email,Mobile,User_id ) values(@Name,@Email,@Mobile,@User_id)";

答案 1 :(得分:0)

替换

string strSql = "Insert into Contacts(Name,Email,Mobile,User_id)
values(@Name,@Email,@Mobile," + UserId +")";

string strSql = "Insert into Contacts(Name,Email,Mobile,User_id )
values(@Name,@Email,@Mobile,@UserId)";

在上面一行中,您只是声明参数。

这就是你实际传递当前用户ID的方式:

cmd.Parameters.Add("@User_id", SqlDbType.Int , UserId);

试试这个;希望它能奏效。

答案 2 :(得分:0)

值(@ Name,@ Email,@ Mobile," + UserId +")" //来自你的来源

avoid ''+ UserId +'' in your string strSql..