简体   繁体   中英

Message=Incorrect syntax near ')'. Source=Core .Net SqlClient Data Provider

I am trying to load csv into my database but I keep getting the following exception

Message=Incorrect syntax near ')'

My code block is as shown below.

var lineNumber = 0;
using (SqlConnection conn = new SqlConnection(@"Data Source=DESKTOP-3EHXXXX;Initial Catalog=XXX_XXXX_Monitoring;Integrated Security=True"))
{
    conn.Open();
    using (StreamReader reader = new StreamReader(@"C:\\Users\\xxx\\Documents\\XXX\\XXX DATA\\xxxxx_xxxx_2011.csv"))
    {
        while (!reader.EndOfStream)
        {
            var line = reader.ReadLine();
            if(lineNumber !=0)
            {
                var values = line.Split(',');
                Console.WriteLine("Before DB Insertion");
                var sql = "INSERT INTO XXXXXXX_Monitoring.dbo.LimsDataLists VALUES ('" + values[0] + "','" + values[1] + "','" + values[2] + "','" + "','" + values[3] + "','" + values[4] + "','" + values[5] + "','" + values[6] + "','" + values[7] + "','" + values[8] + "','" +
                    values[9] + "','" + values[10] + "','" + values[11] + "','" + values[12] + "','" + values[13] + "','" + values[14] + "','" +
                    values[15] + "','" + values[16] + "','" + values[17] + "','" + values[18] + "','" + values[19] + "','" + values[20] + "','" +
                    values[21] + "','" + values[22] + "','" + values[23] + "','" + values[24] + "','" + values[25] + "','" + values[26] + "','" +
                    values[27] + "','" + values[28] + "','" + values[29] + "','" + values[30] + "','" + values[31] + "','" + values[32] + "','" +
                    values[33] + "','" + values[34] + "','" + values[35] + "','" + values[36] + "','" + values[37] + "'," + values[38] + ")";

                var cmd = new SqlCommand();
                cmd.CommandText = sql;
                cmd.CommandType = System.Data.CommandType.Text;
                cmd.Connection = conn;
                cmd.ExecuteNonQuery();
            }
            lineNumber++;
        }
    }
    conn.Close();
}
Console.WriteLine("Data import Complete!");
Console.ReadLine();

If you don't want to use EF you can use SqlParameter instead plain query text:

var sqlParams = new List<object>();
var valuesList = new List<string>();
for (int i = 0; i < values.Length; i++)
{
    sqlParams.Add(new SqlParameter($"@Value{i}", values[i]));
    valuesList.Add($"@Value{i}");
}

var sql = $"INSERT INTO EMR_LIMS_Monitoring.dbo.LimsDataLists VALUES ({ string.Join(", ", valuesList)})";
cmd.Parameters.AddRange(sqlParams);

I suspect that error lies in the sql variable. So, you need to debug your code to catch the string value that the sql variable has. And then run the sql string value somewhere in SQL IDE . Hope that this way you will find where he got stuck into; it's probably a syntax error in your INSERT INTO query.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM