2013-05-27 7 views
0

Я работаю в CSV импорта файла в SQL ServerCSV импорт файла с ошибкой SQL Server

Я получил код из Интернет ..working нормально, но когда я добавляю одно дополнительное поле (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"; 

ответ

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)"; 
+0

но User_ID локальная переменная для текущего входа пользователя .... Я знаю, что проблема в этой области .... но как я могу это сделать, если я напишу @UserId, тогда как установить текущее значение пользователя? –

+0

@KrantiSingh - нормально, но вы добавляете его как параметр в запрос. Так что либо измените то, что я сказал или удалите строку 'cmd.Parameters.Add (" @ User_id ", SqlDbType.Int, UserId)' - Я не вижу, как это имеет смысл в противном случае. –

+0

если это локальная переменная, то назначьте переменную и/или захватите ее как вы бы любой другой переменной/значение .. локальный или нет .. как вы захватываете текущий userId ...? не делайте простой тонкий gs настолько сложный. – MethodMan

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)"; 

В приведенной выше строке вы просто объявляете параметры.

И это, как вы на самом деле передать текущий идентификатор пользователя:

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

Попробуйте это; надеюсь, что это сработает.

0

значения (@ Name, @ электронная почта, @ Mobile»+ USERID + ")" // источник из ур с

avoid ''+ UserId +'' in your string strSql.. 
Смежные вопросы