繁体   English   中英

消息=')' 附近的语法不正确。 Source=Core.Net SqlClient 数据提供者

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

我正在尝试将 csv 加载到我的数据库中,但我不断收到以下异常

消息=')' 附近的语法不正确

我的代码块如下图所示。

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

如果您不想使用 EF,可以使用SqlParameter代替纯查询文本:

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

我怀疑错误在于sql变量。 因此,您需要调试代码以捕获sql变量具有的字符串值。 然后在SQL IDE的某处运行 sql 字符串值。 希望通过这种方式,您会找到他陷入困境的地方; 这可能是您的INSERT INTO查询中的语法错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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