Error converting data type varchar to float. c# webservice

I am creating a web app using c#,

Here is my webservice for saving a record

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public void saverecd(string id, string particular,string amt,string adjamt,string tdate, string total, string date, string utrno, string modeofpayment, string transferdate,string trainer, string typeofadj, string bnkid)
{
    List<string> td = tdate.Split(',').ToList();
    int i = 0;
    foreach (string t in td)
    {
        SqlCommand cmd = new SqlCommand("insert into finalinstructoreexpense(sonvinid,particulars,amount,totalamt,date,utno,paymentid,paymode,issuedate,sondate,trainer,type,bank_id) values('@sonvinid','@particulars','@amount','@totalamt','@date','@utno','@paymentid','@paymode','@issuedate','@sondate','@trainer','@type','@bank_id')", con);
        con.Open();
        cmd.Parameters.Add("@id", SqlDbType.Int).Value =Convert.ToInt32(id);
        cmd.Parameters.Add("@particular", SqlDbType.NVarChar).Value = particular;
        cmd.Parameters.Add("@amount",SqlDbType.Float).Value=adjamt.Split(',')[i];
        cmd.Parameters.Add("@totalamt", SqlDbType.NVarChar).Value = total;
        cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = date.Split(',')[i];
        cmd.Parameters.Add("@utno", SqlDbType.NVarChar).Value = utrno;
        cmd.Parameters.Add("@paymentid",SqlDbType.NVarChar).Value=paymentid;
        cmd.Parameters.Add("@paymode", SqlDbType.NVarChar).Value = modeofpayment;
        cmd.Parameters.Add("@issuedate", SqlDbType.DateTime).Value = transferdate;
        cmd.Parameters.Add("@sondate", SqlDbType.DateTime).Value = t;
        cmd.Parameters.Add("@trainer", SqlDbType.NVarChar).Value = trainer;
        cmd.Parameters.Add("@type", SqlDbType.NVarChar).Value = typeofadj;
        cmd.Parameters.Add("@bank_id", SqlDbType.Int).Value = Convert.ToInt32(bnkid);
        cmd.ExecuteNonQuery();
        message = "Adjusted Amount Inserted Successfully";
        con.Close();
    }

}

i don't know what is wrong with this code,

this is what i enter in web service

Parameter Value id: 0 particular: 0001 amt: 10 adjamt: 10 tdate:
01-01-2013,01-01-2013 total: 20 date: 01-01-2013 utrno: test modeofpayment: test transferdate: 01-01-2013 trainer: ibrahim shaikh typeofadj: adjust bnkid:
Invoke

and following is the error

System.Data.SqlClient.SqlException: Error converting data type varchar to float.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at mvcerp2.newpayment.saverecd(String id, String particular, String amt, String adjamt, String tdate, String total, String date, String utrno, String modeofpayment, String transferdate, String trainer, String typeofadj, String bnkid) in Z:\mvcerp2\mvcerp2\newpayment.asmx.cs:line 135
Jon Skeet
people
quotationmark

The problem is with your SQL, which I've reformatted here to avoid a single huge line:

SqlCommand cmd = new SQlCommand(
    @"insert into finalinstructoreexpense
      (sonvinid,particulars,amount,totalamt,date,
       utno,paymentid,paymode,issuedate,sondate,trainer,type,bank_id) 
      values('@sonvinid','@particulars','@amount','@totalamt','@date',
             '@utno','@paymentid','@paymode','@issuedate','@sondate','@trainer',
             '@type','@bank_id')",
    con);

That SQL doesn't contain any parameters. Instead, it contains quoted string values of "@sonvinid" etc. You need to remove the quotes around your parameter names:

SqlCommand cmd = new SQlCommand(
    @"insert into finalinstructoreexpense
      (sonvinid, particulars, amount, totalamt, date,
       utno, paymentid, paymode, issuedate, sondate, trainer, type, bank_id) 
      values(@sonvinid, @particulars, @amount, @totalamt, @date,
             @utno, @paymentid, @paymode, @issuedate, @sondate, @trainer,
             @type, @bank_id)",
    con);

At that point, each value really is a parameter, which is what you want.

(I've added spaces in as well to make it more readable.)

people

See more on this question at Stackoverflow