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
相关产品推荐
相关产品推荐

