我看到别人原来的ASP写的程序是用的下面的这种方式入库的,不是insert,他们有什么不同吗?sql="select * from article where (newsid is null)" 
rs.open sql,conn,1,3
rs.addnew
rs("title")=title
rs("path")=filepath
rs("content")=content
rs.update里面的content字段为新闻内容字段,入库的时候一切正常,包括那些""''符号之类的也没有什么问题,但是我使用C#写的ASP.NET页面使用的是insert语句
        public int InsertNews(string title,
                              string author,
                              string filepath,
                              string filename,
                              string content,
                              string typename
                              )
        {            SqlConnection sqlconn= new SqlConnection(ConfigurationSettings.AppSettings["connectionstring"]);
            sqlconn.Open();            string sql = "insert into NewsContent(title,author,filepath,filename,content,typename,datetime,hits)values('"+title+"','"+author+"','"+filepath+"','"+filename+"','"+content+"','"+typename+"','"+DateTime.Now.ToString()+"',0)";            //Response.Write(sql);
            //return 0;            SqlCommand cmd = new SqlCommand(sql, sqlconn);
            cmd.ExecuteNonQuery();            sqlconn.Close();            return 0;
        }每次都抱错,说''""附近有语法错误,我快郁闷死了,请问大家是asp与asp.net不同啊?还是insert语句与rs.addnew不同???????asp.net里面改怎么写rs.addnew这样的语句????????

解决方案 »

  1.   

    update时 也是自己组装sql脚本来实现insert的,效率高一点。
    直接写sql执行也行, 如果插入记录不多的话,没多大区别的。
    语法有错误就自己跟踪查查啊,看sql语句写对没有,可以自己去sql server里去执行看看
      

  2.   

    你跟一下SQL最后的执行语句不就得了
      

  3.   

    string sql = "insert into NewsContent(title,author,filepath,filename,content,typename,datetime,hits)values('"+title+"','"+author+"','"+filepath+"','"+filename+"','"+content+"','"+typename+"','"+DateTime.Now.ToString()+"',0)";这种写法太烦琐,很容易出错。
    在数据访问层里写个Insert方法。www.x2blog.cn/supnate 的控件集,开源的。你可以下来自己做补充,非常不错。
    数据添加用这样就可以了。(我已做了修改)
    this.Instance();
             dbo.AddFieldItem("log_CateID",CateID);
    dbo.AddFieldItem("log_Title",Title); dbo.AddFieldItem("log_Intro",Intro);
    dbo.AddFieldItem("log_Author",Author);
    dbo.AddFieldItem("log_From",From);
    dbo.AddFieldItem("log_FromURL",FromURL);
    dbo.AddFieldItem("log_Quote",Quote);
    dbo.AddFieldItem("log_Content",Content);
                               dbo.AddFieldItem("log_PostTime",PostTime);
    dbo.AddFieldItem("log_CommNums",CommNums);
    dbo.AddFieldItem("log_ViewNums",ViewNums);
    dbo.AddFieldItem("log_QuoteNums",QuoteNums); dbo.AddFieldItem("log_IsShow",IsShow);
    dbo.AddFieldItem("log_DisComment",DisComment);
    dbo.AddFieldItem("log_IsTop",IsTop); dbo.AddFieldItem("log_weather",Weather);
    dbo.AddFieldItem("log_Level",Level);
    dbo.AddFieldItem("log_edittype","0");//编辑器类型
    dbo.AddFieldItem("log_comorder",Comorder);
    dbo.AddFieldItem("log_IsDraft","0"); //草稿取消
    dbo.AddFieldItem("log_tag","1");//tag未完成
    int returnID=dbo.Insert("blog_Content");
    dbo.CloseDB();
    很像rs.addnew吧?
      

  4.   

    主要思路:
    1、把数据字段名和字段值用类或者结构封装,保存要提交的数据。
    2、把封装好的数据放入ArrayList数组
    3、循环读取数组,添加入数据库。
      

  5.   

    addnew 实际上还是在调用 insert 这种sql语句来执行插入操作。
    string sql = "insert into NewsContent(title,author,filepath,filename,content,typename,datetime,hits)values('"+title+"','"+author+"','"+filepath+"','"+filename+"','"+content+"','"+typename+"','"+DateTime.Now.ToString()+"',0)";这种拼接出来的SQL不建议使用。应该改为参数占位方式:string sql = "insert into NewsContent(title,author,filepath,filename,content,typename,datetime,hits)values('@title','@author','@filepath','@filename','@content','@typename','@datetime',0)";cmd.Parameters.Add("@title", SqlDbType.VarChar).Value = title;
    cmd.Parameters.Add("@author", SqlDbType.VarChar).Value = author;
    cmd.Parameters.Add("@filepath", SqlDbType.VarChar).Value = filepath;
    cmd.Parameters.Add("@filename", SqlDbType.VarChar).Value = filename;
    cmd.Parameters.Add("@content", SqlDbType.VarChar).Value = content;
    cmd.Parameters.Add("@typename", SqlDbType.VarChar).Value = typename;
    cmd.Parameters.Add("@datetime", SqlDbType.DateTime).Value = DateTime.Now; // 怀疑是你日期格式不对,楼主仔细检查一下。传入数据与数据库字段类型是否匹配。
      

  6.   

    写错了一点,参数不需要再用单引号了。string sql = "insert into NewsContent(title,author,filepath,filename,content,typename,datetime,hits)values(@title,@author,@filepath,@filename,@content,@typename,@datetime,0)";
      

  7.   

    使用insert语句要比rs.addnew模式效率上更高,建议采用fangxinggood(JustACoder)介绍给你的方法。
    “参数占位方式”确实是一个不错的选择。