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

C# WinForm执行SQL插入报Table附近语法错误 求协助解决

报错根因与修复方案

直接触发报错的原因

你的SQL语句中存在两个语法错误:

  • Table是SQL Server的内置保留关键字,直接作为表名使用会被识别为关键字而非表名,触发语法异常
  • 表名不能用单引号'包裹,单引号在SQL中仅用于标识字符串值,引用特殊表名需要用方括号[]包裹

你原来的insert into 'Table'写法错误,临时修复可以改成insert into [Table],但更建议你将数据库里的表名改成有实际意义的名称,比如PatientInfo,避免后续再踩保留关键字的坑。

其他隐藏问题与完整修复方案

你当前的写法还有SQL注入漏洞、特殊字符输入报错、连接资源泄漏的风险,建议直接替换为参数化查询的写法,完整代码如下:

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        // 连接字符串建议放到配置文件中,这里保留你的原有配置
        private readonly string _conStr = @"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename=C:\Users\User\Documents\PatientDB.mdf;Integrated Security = True; Connect Timeout = 30";

        private void label1_Click(object sender, EventArgs e)
        {
           Application.Exit();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // using块会自动释放连接资源,不需要手动Close
            using (SqlConnection con = new SqlConnection(_conStr))
            {
                con.Open();
                // 如果表名已经改成PatientInfo就替换掉[Table]
                string sql = @"insert into [Table] 
                             values(@Fname, @Sname, @Age, @City, @Address, @Gender, @BloodType, @PhoneNum)";
                SqlCommand cmd = new SqlCommand(sql, con);
                // 按字段实际类型添加参数,避免类型转换错误
                cmd.Parameters.AddWithValue("@Fname", fname.Text);
                cmd.Parameters.AddWithValue("@Sname", sname.Text);
                cmd.Parameters.AddWithValue("@Age", int.Parse(age.Text)); // 这里可以额外加年龄合法性校验
                cmd.Parameters.AddWithValue("@City", city.Text);
                cmd.Parameters.AddWithValue("@Address", address.Text);
                cmd.Parameters.AddWithValue("@Gender", gendercb.Text);
                cmd.Parameters.AddWithValue("@BloodType", btcb.Text);
                cmd.Parameters.AddWithValue("@PhoneNum", phonenum.Text);

                cmd.ExecuteNonQuery();
                MessageBox.Show("Patient added successfully");
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 11:36:04