当前位置:编程学习 > C#/ASP.NET >>

insert into语句错误?

大家快帮帮我,我都头大了,当我点击添加按钮后,总是提示insert into语句语法错误,这事为啥,这个语句应该没错啊?

public static void news_add(string title,string content,string editer,string shijian)
    {
        OleDbConnection conn = xwndb.con();
        OleDbCommand cmd = new OleDbCommand("insert into news(title,content,editer,date) values('" +title+ "','" +content+ "','" +editer+ "','" + shijian + "')", conn);
        cmd.ExecuteNonQuery();
        
    }

拜托大家了。。。。。
--------------------编程问答-------------------- 最好不要这样拼sql.

想找到原因,将F5 sql调试出来.
string strSQL = "insert into news(title,content,editer,date) values('" +title+ "','" +content+ "','" +editer+ "','" + shijian + "')", 

另:

data==>[date]
--------------------编程问答--------------------  调试看看 参数value

--------------------编程问答-------------------- 请不要用SQl连接啊,用参数啊,这样很容易被注入啊,

是不是因为你的string title,string content,string editer,string shijian
包含''特殊字符???? --------------------编程问答--------------------  OleDbCommand cmd = new OleDbCommand("insert into news(title,[content],editer,date) values('" +title+ "','" +content+ "','" +editer+ "','" + shijian + "')", conn); 
SQL保留字,加个括号啊!
建议最好用参数啊,防止注入啊! --------------------编程问答-------------------- LZ还没毕业 鉴定完毕 --------------------编程问答-------------------- date也是保留字啊.. --------------------编程问答-------------------- 看你传入的值有没有特殊字符,还有关键字是要加[]的 --------------------编程问答-------------------- 用可变字符字符串对象来写sql语句。StringBuilder --对象。
--------------------编程问答-------------------- 楼主,不要急,一步步调试,看看到底哪里出错了,还有,最好把sql放到管理器里执行一下,看是否能成功, --------------------编程问答--------------------
引用 9 楼 chenyunkun2008 的回复:
楼主,不要急,一步步调试,看看到底哪里出错了,还有,最好把sql放到管理器里执行一下,看是否能成功,


试试 --------------------编程问答-------------------- 用sql打出来看看,数据库里date是不是nvarchar类型的啊? --------------------编程问答-------------------- 调试,将SQl字符串放进数据库中执行一下! --------------------编程问答-------------------- 跟踪下sql就可以了啊 --------------------编程问答-------------------- 把你的insert语句放到数据库中建个查询试试,有可能是关键字的问题,建表或字段时尽量不要使用关键字 --------------------编程问答-------------------- 估计是字段中关键字的问题 --------------------编程问答-------------------- date 是MYSQL函数DATE() 函数返回日期或日期/时间表达式的日期部分。另CONN.OPEN在哪里啊 --------------------编程问答-------------------- 再或者你插入的字符串中有单引号之类的 --------------------编程问答-------------------- 放到 查询分析器 分析下 就知道 问题了哦 --------------------编程问答-------------------- 列名如果是数据库保留字,要加[],还有就是你的Date字段,如果是Date类型的话,不能用‘’插入的吧 --------------------编程问答-------------------- 对啊date必须改为[date],最好不要用连接,强烈推荐用参数。如果真是者条SQL错误,应该很容易调试出来的。楼主别急 --------------------编程问答--------------------
("insert into news(title,content,editer,[date]) values ('" +title+ "','" +[content]+ "','" +editer+ "','" + shijian + "')", 
--------------------编程问答-------------------- --------------------编程问答-------------------- 用参数啊,这样一目了然


        string sql = "insert into news(title,[content],editer,[date]) values(@title,@content,@editer,@date)";
        OleDbCommand cmd = new OleDbCommand(sql,conn);
        cmd.Parameters.Add(new OleDbParameter("@title", title));
        cmd.Parameters.Add(new OleDbParameter("@content", content));
        cmd.Parameters.Add(new OleDbParameter("@editer", editer));
        cmd.Parameters.Add(new OleDbParameter("@date", date));
--------------------编程问答-------------------- 来个完整的吧


    public static void news_add(string title, string content, string editer, string shijian)
    {
        OleDbConnection conn = xwndb.con();
        string sql = "insert into news(title,[content],editer,[date]) values(@title,@content,@editer,@date)";
        OleDbCommand cmd = new OleDbCommand(sql,conn);
        cmd.Parameters.Add(new OleDbParameter("@title", title));
        cmd.Parameters.Add(new OleDbParameter("@content", content));
        cmd.Parameters.Add(new OleDbParameter("@editer", editer));
        cmd.Parameters.Add(new OleDbParameter("@date", date));
        cmd.ExecuteNonQuery(); 
    }
--------------------编程问答-------------------- title 字段名不能用 建议改名
--------------------编程问答-------------------- 放管理器里看看 --------------------编程问答-------------------- 拿存储过程!
小心注入!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,