行 141:        int Score = score;
行 142:        DataSet ds = insertScore.insertscore(int.Parse(UserID),PaperID,Score);
行 143:        DataTable dt = ds.Tables[0];
行 144:        if (dt.Rows.Count>0) 
调用插入方法,并且插入成功

解决方案 »

  1.   

      int Score = score; 
    行 142:        DataSet ds = insertScore.insertscore(int.Parse(UserID),PaperID,Score); 
    行 143:        DataTable dt = ds.Tables[0]; 
    行 144:        if (dt.Rows.Count>0) 调用插入方法,并且插入成功
    插入了 但你返回的有数据吗?自己检查下
      

  2.   

    ds为空吧,你调用的是Insert方法吧,这个方法里有返回类型、返回数据么,先判断ds是否为空,不为空再 DataTable dt = ds.Tables[0]; 
      

  3.   

    DataSet ds = insertScore.insertscore(int.Parse(UserID),PaperID,Score); 
    这个函数是来获取数据集的吗?如果是那就看你的语句了,否则利用IDE进行变量监视ds 
      

  4.   

    你没有创建DataTable呢,new 一个试试,另外Table默认的名字是Table;
      

  5.   

    返回DAtaSet了,而且创建DataTable了
    public DataSet  insertscore(int userid,int paperid,int score)
      DataSet ds = insertScore.insertscore(int.Parse(UserID),PaperID,Score);
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count>0) 
      

  6.   

    DataTable dt=new DataTable(ds.Tables[0])
      

  7.   

    DataTable dt = ds.Tables[0]; 
    错误
    上面的插入方法,没有给ds中填充table
    然后你用tables[0]就报那个错误把插入的方法贴出来看看
      

  8.   

     public DataSet  insertscore(int userid,int paperid,int score)
        {
            Exercise exer = new Exercise();
            SqlConnection conn=exer.getcon();
            conn.Open();
            SqlCommand cmd=new SqlCommand("insertscore",conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter paramuseid = new SqlParameter("@userid", SqlDbType.Int);
            paramuseid.Value = userid;
            cmd.Parameters.Add(paramuseid);
            SqlParameter parampaperid = new SqlParameter("@paper_ID", SqlDbType.Int);
            parampaperid.Value = paperid;
            cmd.Parameters.Add(parampaperid);
            SqlParameter paramscore = new SqlParameter("@score", SqlDbType.Int);
            paramscore.Value = score;
            cmd.Parameters.Add(paramscore);        DataSet ds = new DataSet();
            SqlDataAdapter ada = new SqlDataAdapter(cmd);
            ada.Fill(ds);
            conn.Close();        return ds;
        }您看看
      

  9.   

            int Score = score; 
            DataSet ds = insertScore.insertscore(int.Parse(UserID),PaperID,Score); 
            if(ds.Tables.Count > 0)
            {
                DataTable dt = ds.Tables[0]; 
                if (dt.Rows.Count>0) ;
            }
      

  10.   

    返回的DataSet肯定是null
    判断下if (ds!=null)
    {}
      

  11.   


    你肯定要加这种逻辑的
    只是这个逻辑不能解决你这个问题
    你的问题要跟踪调试了把你存储过程copy出来看看
      

  12.   

    CREATE PROCEDURE insertscore
    (@userid  int,@paper_ID int,@score int)
    AS  
    begin transaction 
    insert score
    (userid ,paper_ID,score)
    values
    (@userid,@paper_ID,@score)
    Commit
    GO
      

  13.   

    そが你的存储过程是执行插入操作,
    这样返回的是执行影响的行数成功为1,不成功为0,你要想获取数据集后面要加select * from score 
    然后你在代码里面fill才可以填充数据集,ds里面才会有数据
      

  14.   

    CREATE PROCEDURE insertscore 
    (@userid  int,@paper_ID int,@score int) 
    AS  
    begin transaction 
    insert score 
    (userid ,paper_ID,score) 
    values 
    (@userid,@paper_ID,@score) ;
    select * from score 
    Commit 
    GO