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

Windows Form向SQL Server插入数据报错Incorrect syntax near 'value'

问题解决方法

你遇到的语法报错由两个代码问题共同导致,按以下步骤修改即可修复:

1. 修复SQL语法错误

SQL标准中INSERT语句插入值的关键字为复数VALUES,你代码里写的单数VALUE不符合SQL Server语法要求,这是报错的直接诱因。

2. 适配SQL Server参数占位符规则

SqlClient类库不支持?作为参数占位符,需要使用@参数名的格式定义参数位。

3. 优化资源管理(可选,推荐)

使用using语法自动释放数据库连接、命令对象资源,无需手动调用Dispose()和Close(),避免资源泄漏。


修改后的btSave_Click方法代码如下:

private void btSave_Click(object sender, EventArgs e)
{
    // using会自动在代码块结束时释放连接资源
    using (SqlConnection conn = new SqlConnection(ConnectionString))
    {
        conn.Open();
        // 修正为VALUES,参数改为@前缀格式
        String sql = "INSERT INTO CalendarEvent (TimeDate, EventName) VALUES (@TimeDate, @EventName)";

        using (SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = sql;
            // 参数名和SQL里的@占位符对应
            cmd.Parameters.AddWithValue("@TimeDate", tbDate.Text);
            cmd.Parameters.AddWithValue("@EventName", tbEvent.Text);

            cmd.ExecuteNonQuery();
        }
    }
    MessageBox.Show("Saved!");
}

额外优化建议

你当前把时间字段TimeDate设为varchar(255)类型不符合数据库设计规范,后续如果需要做时间范围查询、排序等操作会非常麻烦,建议修改字段类型为datetime或date,插入时将tbDate.Text转换为DateTime类型再传入参数,避免后续业务逻辑出问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:36:04