高手看看我这段代码出现什么问题?
1、新建一个DataOperate类,代码如下:
public bool DataCom(string sqlstr)
    {
        my_conn.Open();
       OleDbCommand sqlcomm = new OleDbCommand(sqlstr, my_conn);
          try
        {
            sqlcomm.ExecuteNonQuery();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            my_conn.Close();
        }
    }2、在页面后台代码
 DataOperate sqlBind = new DataOperate();
string sqlstr = "insert into Card (UserID,ModuleID,CardName,CardContent)"
                + " values('" + Session["UserID"].ToString() + "','" + strModuleID.ToString()
                + "','" + txtCardTitle.Text + "','" + txtCardContent.Text + "')";
        sqlBind.DataCom(sqlstr);
        Response.Write("<script language=javascript>alert('发表成功');</script>");运行没有出现错误,提示“发表成功”但数据库里却没内容?为什么?请指点!!谢谢!!

解决方案 »

  1.   

    你在查询分析器中 运行 你这条 SQL语句是否正常 
    如果 正常 查看 是不是没有取到 参数 
      

  2.   

    把你写的SQL语句输出出来 然后在数据库里面试下看看有没有问题 解决这样问题的方法有很多种 自己多试试
      

  3.   

      sqlBind.DataCom(sqlstr); 这个方法不是有返回值吗?你用一个变量获取它的返回值,然后判断该返回值是否为真,如果为真则输出“发表成功”。否则提示失败,不然你这个方法设置返回值有什么用?
    只要这个方法执行了,没有异常,不管数据库操作是否成功,都会输出成功的。
      

  4.   

    你这么写当然不对了。不管插入成功与否程序都会走到Response.Write(" <script language=javascript>alert('发表成功'); </script>"); 
    可以这样public Boolean ExecSQL(string sQueryString)
        {
            OleDbConnection con = new OleDbConnection(ConfigurationManager.AppSettings["conStr"]);
            con.Open();
            OleDbCommand dbCommand = new OleDbCommand(sQueryString, con);
            try
            {
                dbCommand.ExecuteNonQuery();
                con.Close();
            }
            catch
            {
                con.Close();
                return false;
            }
            return true;
        }
    然后这样调用
    DataOperate sqlBind = new DataOperate(); 
    string sqlstr = "insert into Card (UserID,ModuleID,CardName,CardContent)" 
                    + " values('" + Session["UserID"].ToString() + "','" + strModuleID.ToString() 
                    + "','" + txtCardTitle.Text + "','" + txtCardContent.Text + "')"; 
          bool flag=  sqlBind.ExecSQL(sqlstr); 
            if(flag)
    {
       Response.Write(" <script language=javascript>alert('发表成功'); </script>"); 
     
    }else
    {
      Response.Write(" <script language=javascript>alert('发表失败); </script>"); }
      

  5.   

    设断点看 sqlstr 的内容是什么 sql语句语法应该没有问题 否则会报异常 ,可能没取到数据
      

  6.   

    这种问题 我觉得楼主应该自己学会debug,自己调试。 这才有助于提高
      

  7.   

    查询分析器,数据库问题,一是在程序中调试出SQL语句贴到分析器中去。
      

  8.   

    sqlcomm.ExecuteNonQuery(); 
    是返回受影响的行数,就算操作没有成功还不是return true; 
    设断点调试
      

  9.   

    设断点
    或者在SQLSERVER的事件查看器中看。
      

  10.   

    DataOperate sqlBind = new DataOperate(); 
    string sqlstr = "insert into Card (UserID,ModuleID,CardName,CardContent)" 
                    + " values('" + Session["UserID"].ToString() + "','" + strModuleID.ToString() 
                    + "','" + txtCardTitle.Text + "','" + txtCardContent.Text + "')"; 
           bool IsSucc= sqlBind.DataCom(sqlstr); 
           if(IsSucc) 
            Response.Write(" <script language=javascript>alert('发表成功'); </script>"); 
           else
            Response.Write(" <script language=javascript>alert('发表失败'); </script>"); 
      

  11.   

    进入Debug模式查看sqlstr的值看看是你要SQl语句不,能执行但插不进去值一般是SQL语句的事。
      

  12.   

    插入语句报错了,
    但错误被你直接处理
     catch 
            { 
                return false; 
            } 
    没有提示出具体错误信息,成功以都往下执行了
    你调试一下,把try去掉,直接让它把错误报出来
      

  13.   


    public bool ExecSQL(string sQueryString)
        {
            OleDbConnection con = new OleDbConnection(ConfigurationManager.AppSettings["conStr"]);
            con.Open();
            OleDbCommand dbCommand = new OleDbCommand(sQueryString, con);
            
            try
            {
                return dbCommand.ExecuteNonQuery() > 0;
            }
            finally
            {
                con.Close();
            }
            return false;
        }
    然后这样调用
    DataOperate sqlBind = new DataOperate(); 
    string sqlstr = "insert into Card (UserID,ModuleID,CardName,CardContent)" 
                    + " values('" + Session["UserID"].ToString() + "','" + strModuleID.ToString() 
                    + "','" + txtCardTitle.Text + "','" + txtCardContent.Text + "')"; 
          bool flag=  sqlBind.ExecSQL(sqlstr); 
            if(flag)
    {
       Response.Write(" <script language=javascript>alert('发表成功'); </script>"); 
     
    }else
    {
      Response.Write(" <script language=javascript>alert('发表失败); </script>"); }