2 reverielin ReverieLin 于 2016.03.18 16:17 提问

int x = cmd.ExecuteNonQuery(); 附近有语法错误
    string connString = "server = .;database = sztsl; integrated security = true";

    private void btnDadd2_Click(object sender, EventArgs e)
    {
        SqlConnection conn = new SqlConnection(connString);
        conn.Open();
        string sql = string.Format("insert into Daily(Date,StarTime,Endtime,Person,Failure,Reason,Solution,Message) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}'",txtDdate.Text, txtDstartime.Text, txtDendtime.Text, txtDperson.Text, txtDfailure.Text, txtDreason.Text, txtDstartime.Text, txtDmessage.Text);
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = sql;
        cmd.CommandType = CommandType.Text;
        cmd.Connection = conn;
       **int x = cmd.ExecuteNonQuery();** 调试提示这里:附近有语法错误
        conn.Close();
        if (x >= 1)
            MessageBox.Show("Succeed", "Prompt",MessageBoxButtons.OK);
        MessageBox.Show("Failure", "Prompt", MessageBoxButtons.OK);

    }

4个回答

ReverieLin
ReverieLin   2016.03.21 12:44
已采纳

找到原因了,sql語句中少了個:)。真是麻煩大家了。

caozhy
caozhy   Ds   Rxr 2016.03.18 22:08

Date是关键字,需要用方括号转义。

ReverieLin
ReverieLin 謝謝您的回答。這個試了不行,我又重新創建了一個沒有關鍵字的新表和一個新的解決方案,複製代碼稍微修改錯誤依舊。
2 年多之前 回复
cxy258119025
cxy258119025   2016.03.18 16:28

把实际的sql放到数据库里面执行一下。看是否会报错。

ReverieLin
ReverieLin 谢谢您的回答。我试了,可以在SQL里面执行,返回一行受影响。
2 年多之前 回复
Mikell
Mikell   2016.03.18 16:44

很有可能是时间格式问题。而且这种方式会造成 SQL Injection的问题。最好用 Parameter。

ReverieLin
ReverieLin 谢谢您的回答。为了排除时间格式的影响,我特意把所有数据类型改为varchar了。然后谢谢您的建议。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
'(' 附近有语法错误
先粘贴一下代码     "             SelectCommand="SELECT [公告编号] AS AnnouceID, LEFT([公告名称],15) AS Title FROM [公告表]">                报错:        '(' 附近有语法错误 仔细看了所有的左括号,才发现自己有一个左括号是中文的左括号,更改成英文状态下的左括号,即可
“在关键字 'COLUMN' 附近有语法错误。”是怎么回事?其实很简单!
在ASP程序中,想通过ASP在数据表中添加新字段,根据“sql中文参考手册.chm”中所述,用了“ALTER TABLE Employees ALTER COLUMN Salary CHAR(20)”语句,居然报错:Microsoft OLE DB Provider for SQL Server 错误 80040e14 在关键字 COLUMN 附近有语法错误。 /ddd/ttt
【Linux】shell 未预期的符号 "" 附近有语法错误
可能的原因有: 1,代码的编码用错了,比如说标点符号的全角半角。很可能你的上文就夹杂了一个中文标点。导致它之后一路代码被编译器给识别成其他样子了。 2,本身语法错误。
解决 .bashrc: 行 1: 未预期的符号 `(' 附近有语法错误
平台:ubuntu12.04 现象:shell终端错误提示如下 .bashrc: 行 1: 未预期的符号 `(' 附近有语法错误 .bashrc: 行 1: `# ~/.bashrc: executed by bash(1) for non-login shells.' 解决:将.bashrc文件的编码格式改为UTF-8即可! 方法:(1) 将.bashrc拷贝到Windows  
'@P0' 附近有语法错误
问题出在ibatis中的某个orm配置文件,查看你的某些sql语句,尤其是用到#和$等进行赋值的,区分开到底是用#还是$eg:select top $pagefrom$ id from tb_book而不是select top #pagefrom# id from tb_book
'OFFSET' 附近有语法错误。关键字 'AS' 附近有语法错误。
在使用 EF 的时候,突然发现更新后在服务器中运行出错,异常信息主要包含以下信息: 'OFFSET' 附近有语法错误。关键字 'AS' 附近有语法错误。 想到可能时因为本地开发环境的数据库版本高于服务器版本,导致 EF 生成了错误的 SQL 语句,但是不知道具体应该从哪里修改。 经 google 后找到解决方案: 找到 EF 对应生成的 edmx 文件,使用文本编辑器打开编
关键字“ ”附近有语法错误
解决1:加中括号 解决2:换名 下面这些词都是T-SQL语句中的关键字,在你写SQL语句,存储过程,触发器或字段命名等时要避免使用这些词。 ADD EXIT PRIMARY ALL FETCH PRINT ALTER FILE PRIVILEGES
mybatis 动态SQL '@P0' 附近有语法错误
1、mybatis动态SQL遇到的问题 org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: “@P0”附近有语法错误。 ### The error may exist in file [E:\DevelopTools\Ecli
sqlserver @P0附近有语法错误
我在项目中使用的mybatis,  参数传递通过#{}预编译的方式,使用的sqlserver数据库。 sqlserver 中分页查询使用select  top ? * from table where column=? 执行时报错,@P0附近有语法错误 原因: Top后面是不允许使用问号占位符 解决方案: 将Top后面的占位符改为${}的方式,相当于字符串拼接
未预期的符号`('附近有语法错误(mysql)
bash: 未预期的符号 `(' 附近有语法错误  1、在()前面增加转义符号“ \ ”,这样才能顺利执行。 2、如非必须使用();可以使用[]代替;使用未预期的符号 ` 并不是网上所说的是文件编码的问题,因为()在MySQL和一些编程语言中有着特殊的含义。