2016-12-15 5 views
0

Я создаю веб-приложение, в котором мне нужно вставить в базу данных некоторые значения. Вот мой вебсервис за то же самое:Вставить arraylist в базу данных C# webservice

[WebMethod] 
[ScriptMethod(UseHttpGet = true)] 
public void saverecd(string id, string particular,string amt,string tdate, string total, string date, string utrno, string modeofpayment, string transferdate,string trainer, string typeofadj) 
{ 
    sqlq = ""; 
    sqlq = "insert into finalinstructoreexpense(sonvinid,particulars,amount,totalamt,date,utno,paymentid,paymode,issuedate,sondate,trainer,type,bank_id) values('" + id + "','" + particular + "','" + amt + "','" + total + "',convert(datetime,'" + date + "',105),'" + utrno + "','" + paymentid + "','" + modeofpayment + "',convert(datetime,'" + transferdate + "',105),convert(datetime,'" + tdate + "',105),'" + trainer + "','" + typeofadj + "',null)"; 
    con.Open(); 
    SqlCommand comm1 = new SqlCommand(sqlq, con); 
    comm1.ExecuteNonQuery(); 
    message = "Adjusted Amount Inserted Successfully"; 
    con.Close(); 
    Context.Response.Write(message); 
} 

Здесь я получаю частности, 13111300002,13111300001, я хочу, чтобы хранить эти значения отдельно в моей базе данных:

1531 20667 13111300002,13111300001 200 200 2013-12-15 00:00:00.000 test 1312150001 Online 2013-01-01 00:00:00.000 2013-11-13 00:00:00.000 Ibrahim shaikh split NULL 

Это как мои данные хранения в базе данных :

1531 20667 13111300002 200 200 2013-12-15 00:00:00.000 test 1312150001 Online 2013-01-01 00:00:00.000 2013-11-13 00:00:00.000 Ibrahim shaikh split NULL 
1531 20667 13111300001 200 200 2013-12-15 00:00:00.000 test 1312150001 Online 2013-01-01 00:00:00.000 2013-11-13 00:00:00.000 Ibrahim shaikh split NULL 

Я хочу сохранить свои данные следующим образом.

Что мне нужно сделать здесь?

Извините за плохое объяснение

+0

Прежде всего вам нужно сменить запрос на Параметрированный запрос. –

ответ

1

Прежде всего, вам нужно изменить запрос для Parameterized запроса, так как он склонен к SQL Injection. и затем вы можете разделить строку, идущую с ,, и запустить цикл, чтобы получить значения в БД.

public void saverecd(string id, string particular,string amt,string tdate, string total, string date, string utrno, string modeofpayment, string transferdate,string trainer, string typeofadj) 
{ 
    List<string> sp = particular.split(','); 
    int i = 0; 
    foreach(string s in sp) 
    { 
     using (SqlConnection connection = new SqlConnection(/* connection info */)) 
     { 
      sqlq = "insert into finalinstructoreexpense(sonvinid,particulars,amount,totalamt,date,utno,paymentid,paymode,issuedate,sondate,trainer,type,bank_id) values(@id,@s,@amt,@total,@dt,@utrno,@paymentid,@modeofpayment,@transferdate,@tdate,@trainer,@typeofadj,null)"; 
      connection.Open(); 
      using (SqlCommand comm1 = new SqlCommand(sql, connection)) 
      { 
       comm1.Parameters.Add("@id",SqlDbType.Int).value=id; 
       comm1.Parameters.Add("@s",SqlDbType.Varchar, 50).value =s; 
       comm1.Parameters.Add("@amt",SqlDbType.Varchar, 50).value =amt.Split(',')[i];; 
       comm1.Parameters.Add("@trainer",SqlDbType.Varchar, 50).value =trainer; 
       comm1.Parameters.Add("@dt", SqlDbType.Date).Value = date; 
       //You can add all your Parameters here 
       // I have added 3 types of as Int, Varchar and Date to give the idea 
       comm1.ExecuteNonQuery(); 
       message = "Adjusted Amount Inserted Successfully"; 
       Context.Response.Write(message); 
       i++; 
      } 
     } 
    } 
} 
+0

спасибо, сэр, но что, если моя сумма также поступит в массив, что мне нужно сделать, то –

+0

может у вас пример количества и деталей ?? как это выглядит ??? –

+0

это мой особый '13111300002,13111300001' –

0

Вы могли бы разделить вашу конкретную переменную с запятой разделителем и сделать несколько баз данных требует, чтобы вставить данные так, как вы хотите.

string[] particulars = particular.split(','); 

for(int i=0; i < particulars.Length; i++) 
{ 
// here you could make a database call to insert row into the database 
} 
+0

спасибо, сэр, но что, если моя сумма также поступит в массив, что мне нужно сделать, тогда –

+0

первоначально не упоминалось, что сумма также будет в массиве, но решение, которое вы дали, будет работать, если сумма также находится в массиве и имеют такое же количество элементов, как и данные. –