注册 登录
编程论坛 ASP.NET技术论坛

添加数据出现的问题

klose1986 发布于 2008-08-04 09:53, 830 次点击
protected void Button1_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            Session["userid"] = 0;
            string strID = Session["userid"].ToString();
            string strSubject = this.tbSubject.Text;
            string strMsg = this.tbMsg.Text;
            string strIP = Request.UserHostAddress.ToString();
            System.DateTime dateTime = DateTime.Now;
            string strDate = dateTime.ToString();
            string strSql = "insert into newpost(subject,userid,message,ip,posttime) values ('" + strSubject + "','" + strID + "','" + strMsg + "','" + strIP + "','" + strDate + "');";
            ExcuteSql(strSql);
            string strConn = "Data Source=admin;Initial Catalog=bbs;User ID=sa;Password=111";
            DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient");
            DbConnection dbConn = dbProviderFactory.CreateConnection();
            dbConn.ConnectionString = strConn;
            dbConn.Open();
            DbCommand dbComm = dbProviderFactory.CreateCommand();
            dbComm.Connection = dbConn;
             = "select postid from newpost where userid= '" + strID + "' and posttime= '" + dateTime + "'";
            IDataReader reader = dbComm.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(reader);
            int strPostID = (int)dt.Rows[0][0];
            reader.Close();
            dbConn.Close();
            dbConn.Dispose();
            Response.Write("新主题添加成功,请单击<a href='message.aspx?postid=" + strPostID + "'>进入主题</a>,或者单击<a href='bbs.aspx'>返回论坛</a>");
        }
    }
    private void ExcuteSql(string strSql)
    {
        string strConn = "Data Source=admin;Initial Catalog=bbs;User ID=sa;Password=111";
        DbProviderFactory dbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient");
        DbConnection dbConn = dbProviderFactory.CreateConnection();
        dbConn.ConnectionString = strConn;
        dbConn.Open();
        DbCommand dbComm = dbProviderFactory.CreateCommand();
        dbComm.Connection = dbConn;
         = strSql;
        dbComm.ExecuteNonQuery();
        dbConn.Close();
        dbConn.Dispose();
    }
   
    protected void Button2_Click(object sender, EventArgs e)
    {
       Response.Redirect("bbs.aspx");
    }
}
这是BBS论坛中发表新主题的一段代码,运行后可以进入发表的界面,但是添加内容后报错“无法将 NULL 值插入列 'views',表 'bbs.dbo.newpost';该列不允许空值。INSERT 失败”。
发表新主题连接的数据库newpost表中包括postid(主键),subject,message,posttime,userid,ip,replies(回复次数),views(浏览次数)  都设置不为空。postid标识种子,replies和 views就总是提示上面的错误。是不是数据表的属性要做修改?哪里出错了如何解决?请高手不吝赐教,谢谢
7 回复
#2
雪雨星风2008-08-04 10:03
views有默认值吗
#3
tomtory2008-08-04 10:05
insert into newpost(subject,userid,message,ip,posttime) values ('" + strSubject + "','" + strID + "','" + strMsg + "','" + strIP + "','" + strDate + "')

这是你SQL语句  而表中有views和replies这两个字段
并且你将这两个字段设置了不能为空的
不的SQL语句中又没有给这两个字段赋值,当然要报错噻
必需要给在表中设置了不能为空的字段赋值
#4
雪雨星风2008-08-04 10:05
点击发表新主题的同时往数据库中+1
#5
klose19862008-08-04 10:16
views和replies默认初始的值应该是0,请问从哪添加进去,是数据表里面直接添加还是在执行SQL语句之前定义?
#6
tomtory2008-08-04 14:42
在新建表的时候里面设置这两个字段的默认值就可以了噻
你也可以在SQL语句中添加
#7
klose19862008-08-04 15:20
ok了,已经可以读入数据了,谢谢2位了。
#8
laser20082008-08-06 17:08
呵呵! 有点意思!
1