我的代码如下:SqlDataAdapter sda = new SqlDataAdapter();
                    sda.InsertCommand = new SqlCommand("addcj_dail_record",con);
                    sda.InsertCommand.CommandType = CommandType.StoredProcedure;
                    SqlParameter par = new SqlParameter("@car_h",SqlDbType.NVarChar);
                    par.Value = car_h;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@cpxh",SqlDbType.NVarChar);
                    par.Value = cpxh;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@uptime", SqlDbType.DateTime);
                    par.Value =uptime;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@downtime", SqlDbType.DateTime);
                    par.Value = downtime;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@danjia", SqlDbType.NVarChar);
                    par.Value = danjia;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@denghou", SqlDbType.Int);
                    par.Value = denghou;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@gsmc", SqlDbType.NVarChar);
                    par.Value = gsmc;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@id", SqlDbType.NVarChar);
                    par.Value = id;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@xingcheng", SqlDbType.Float);
                    par.Value = xingcheng;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@yingcheng", SqlDbType.Float);
                    par.Value = yingcheng;
                    sda.InsertCommand.Parameters.Add(par);
                    par = new SqlParameter("@jine", SqlDbType.Float);
                    par.Value = jine;
                    sda.InsertCommand.Parameters.Add(par);
                    sda.InsertCommand.ExecuteNonQuery();
                    sda.Dispose();
                    con.Close();
                    return true;
我的程序是用for循环来执行这段代码的,当执行到90-110条之间,运行到sda.InsertCommand.ExecuteNonQuery();
                    sda.Dispose();
                    con.Close();
这三句其中的一句的时候,调试按钮变成灰色,无法继续调试。界面也不动了,也不往数据库中插入数据了。
之所以写90-110,还有后面的三句代码,是因为随机停止的。请各位高手帮帮忙,看看是怎么回事。
先到先解决的,给多分

解决方案 »

  1.   

    如果需要一下子插入这么多条数据 为什么不用transaction 来处理呢,一起提交数据?参考 http://www.ideaext.com/read.php/266.htm
      

  2.   

    频繁地new啊new 啊new 啊,还是sql的对像……
      

  3.   

    SqlDataAdapter sda = new SqlDataAdapter(); 
                        sda.InsertCommand = new SqlCommand("addcj_dail_record",con); 
                        sda.InsertCommand.CommandType = CommandType.StoredProcedure; 
    for(int i=0;i<...;i++)//假设有多条数据
    {
    sda.InsertCommand.Parameters.Clear();//清除以前的参数设置
    SqlParameter par = new SqlParameter("@car_h",SqlDbType.NVarChar); 
                        par.Value = car_h; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@cpxh",SqlDbType.NVarChar); 
                        par.Value = cpxh; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@uptime", SqlDbType.DateTime); 
                        par.Value =uptime; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@downtime", SqlDbType.DateTime); 
                        par.Value = downtime; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@danjia", SqlDbType.NVarChar); 
                        par.Value = danjia; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@denghou", SqlDbType.Int); 
                        par.Value = denghou; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@gsmc", SqlDbType.NVarChar); 
                        par.Value = gsmc; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@id", SqlDbType.NVarChar); 
                        par.Value = id; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@xingcheng", SqlDbType.Float); 
                        par.Value = xingcheng; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@yingcheng", SqlDbType.Float); 
                        par.Value = yingcheng; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@jine", SqlDbType.Float); 
                        par.Value = jine; 
                        sda.InsertCommand.Parameters.Add(par); }
    sda.Dispose(); 
                        con.Close(); 
                        return true; 
    如果要同时插入多条记录,可以在开始插入之前初始化数据库相关对象,打开连接,然后依次将多条数据写入,最后关闭数据库连接,释放对象,这样效率高。
      

  4.   

    你那个有错误,往下看:SqlDataAdapter sda = new SqlDataAdapter(); 
                        sda.InsertCommand = new SqlCommand("addcj_dail_record",con); 
                        sda.InsertCommand.CommandType = CommandType.StoredProcedure; 
    for(int i=0;i<...;i++)//假设有多条数据
    {
    sda.InsertCommand.Parameters.Clear();//清除以前的参数设置
    SqlParameter par = new SqlParameter("@car_h",SqlDbType.NVarChar); 
                        par.Value = car_h; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@cpxh",SqlDbType.NVarChar); 
                        par.Value = cpxh; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@uptime", SqlDbType.DateTime); 
                        par.Value =uptime; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@downtime", SqlDbType.DateTime); 
                        par.Value = downtime; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@danjia", SqlDbType.NVarChar); 
                        par.Value = danjia; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@denghou", SqlDbType.Int); 
                        par.Value = denghou; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@gsmc", SqlDbType.NVarChar); 
                        par.Value = gsmc; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@id", SqlDbType.NVarChar); 
                        par.Value = id; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@xingcheng", SqlDbType.Float); 
                        par.Value = xingcheng; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@yingcheng", SqlDbType.Float); 
                        par.Value = yingcheng; 
                        sda.InsertCommand.Parameters.Add(par); 
                        par = new SqlParameter("@jine", SqlDbType.Float); 
                        par.Value = jine; 
                        sda.InsertCommand.Parameters.Add(par); }
    sda.Dispose(); 
                        con.Close(); 
                        return true; OK!!!!!!!!!!!!!!!!!
      

  5.   

    1 可能数据的问题,如类型、大小、精度等
    2 sda.InsertCommand.Parameters 集合是否有限制解决方法探索有3:
     1 排除法:每条记录不要一次插那么多字段值,从1~n逐步增加参数个数,看是不是某个字段的值有问题
     2 在存储过程返回个值表示插入是否成功,如失败就返回个错误提示,否则返回空字符串
     3 换种方法,用IDbDataParameter 试试,我们一直用这个,举例
       
       IDbConnection connection = new SqlConnection("sqlstring");
       IDbCommand command = connection.CreateCommand();          
       command.CommandType = CommandType.StoredProcedure;
       command.CommandText = "yourProcedure";
       
       //构造调用存储过程的参数
       List<IDbDataParameter> dbDataParameters = new List<IDbDataParameter>();
       IDbDataParameter dbDataParameter1 = businessObj.CreateDbDataParameter();//输入参数
       dbDataParameter1.ParameterName = "strSgin";
       dbDataParameter1.DbType = DbType.String;
       dbDataParameter1.Value = signser;
       dbDataParameter1.Direction = ParameterDirection.Input;
       dbDataParameters.Add(dbDataParameter1);   IDbDataParameter dbDataParameter2 = businessObj.CreateDbDataParameter();//输入参数
       dbDataParameter2.ParameterName = "v_lotno";
       dbDataParameter2.DbType = DbType.String;
       dbDataParameter2.Value = lotno;
       dbDataParameter2.Direction = ParameterDirection.Input;
       dbDataParameters.Add(dbDataParameter2);   IDbDataParameter dbDataParameter3 = businessObj.CreateDbDataParameter();//输出参数:错误信息
        dbDataParameter3.ParameterName = "errmsg";
       dbDataParameter3.DbType = DbType.String;
       dbDataParameter3.Size = 100;//大小
       dbDataParameter3.Direction = ParameterDirection.Output;
       dbDataParameters.Add(dbDataParameter3);
       ...
       
       //执行
       object result = command.ExecuteNonQuery();  //判断 result 的值
      if (!string.IsEmptyOrNul(result)) //抛异常
      

  6.   

    不好意思,后面错了,应该是: //执行 
      int result = command.ExecuteNonQuery();   //判断 result 的值 
      if (result <= 0) //抛异常