You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#连接SQL Server插入数据报错:Incorrect syntax near ')' 求助

问题分析与解决方案

错误原因

你遇到的Incorrect syntax near ')'错误,是字符串拼接SQL语句导致的语法异常:

  • 如果newLogin/newPassword包含单引号(如O'Neil),拼接后会直接破坏SQL语法结构;
  • 如果newAdminAccess未正确赋值(比如为null),会生成类似, )的错误片段,触发括号附近的语法错误;
  • 这种写法还存在严重的SQL注入风险,属于高危代码写法。

修复代码(参数化查询)

替换字符串拼接逻辑,使用SQL参数化查询,从根源解决语法问题和安全风险:

// 使用参数化查询,避免字符串拼接的语法错误和注入风险
sqlQuery = "INSERT INTO [dbo].[Guardians] ([Login], [Password], [AdminAccess]) VALUES (@Login, @Password, @AdminAccess)";

cmd = new SqlCommand(sqlQuery, sqlConnection);
// 添加参数并指定类型,匹配数据库字段类型
cmd.Parameters.Add("@Login", SqlDbType.NVarChar).Value = newLogin;
cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = newPassword;
cmd.Parameters.Add("@AdminAccess", SqlDbType.Bit).Value = newAdminAccess;

if (cmd.ExecuteNonQuery() == 1)
{
    listener.Send(Encoding.UTF8.GetBytes("Success"));
}
else
{
    listener.Send(Encoding.UTF8.GetBytes("Failure"));
}

额外提示

  1. 永远不要用字符串拼接生成SQL语句,这是.NET操作SQL数据库的基本规范;
  2. 建议为Password字段添加加密逻辑(如哈希存储),明文存储密码属于严重安全漏洞;
  3. 可以用cmd.Parameters.AddWithValue简化写法,但显式指定SqlDbType能避免类型转换异常,更推荐使用。

内容的提问来源于stack exchange,提问作者Lucifer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:20:27