回 帖 发 新 帖 刷新版面

主题:[讨论]代码分析,不知道到底那里出错拉,请帮忙分析一下拉,不胜感激

private void showButton_Click(object sender, System.EventArgs e)
        {
            float condition_value = float.Parse(conditionValue.Text);
            try
            {
                string myConnectString = "Persist Security Info=False;Integrated Security=SSPI;database=zhwPaper;server=CLC-31071999FBB\\CLC;Connect Timeout=30";
                SqlConnection myConn = new SqlConnection(myConnectString);
                myConn.Open();
                SqlDataAdapter myAdp = new SqlDataAdapter("select serve_expense, execute_time, reliability, availability from serve_detail where serve_detail.No= '"+str+"'" ,myConn);
                DataSet dst=new DataSet();
                myAdp.Fill(dst);
                int row = dst.Tables[0].Rows.Count;
                int column = dst.Tables[0].Columns.Count;
                float [][]serve_value = new float[row][];
                for(int i=0;i<dst.Tables[0].Rows.Count; i++)
                {
                    for(int j=0; j<dst.Tables[0].Columns.Count; j++)
                    {
                        //serve_value[i][j] = dst.Tables[0].Rows[i][j].ToString();
                        serve_value[i][j] = float.Parse((string)dst.Tables[0].Rows[i][j]);
                    }
                }
                //约束条件,进行值的重新定位
                for(int i =0; i<row; i++)
                {
                    if(serve_value[i][0]<condition_value)
                    {
                        serve_value[i][0] = condition_value;
                    }
                }
                //无量纲化
                for(int i = 0; i<column; i++)
                {
                    float min, max;
                    min = serve_value[0][i];
                    max = serve_value[0][i];
                    for(int j =1; j<row; j++)
                    {
                        if(serve_value[j][i]<min)
                        {
                            min = serve_value[j][i];
                        }
                        else
                        {
                            max = serve_value[j][i];
                        }
                    }
                    //进行无量纲化
                    float max_min = max-min;
                    for(int j=0;j<row;j++)
                    {
                        if(max_min != 0)
                        {
                            serve_value[j][i] = (serve_value[j][i] - min)/max-min;
                        }
                        else
                        {
                            serve_value[j][i] = 1;
                        }
                    }
                }
                //加权值处理
                float []final = new float[column];  //final为加权处理后的集合
                
                for(int i = 0; i<row; i++)
                {
                    for(int j =0; j<column; j++)
                    {
                        final[j] +=serve_value[i][j]*quan_value[j];  //quan_value为权值数组
                    }
                }
            //选取最佳结果
                    float result = final[0];
                        int result_tag = 0;
                        for(int j=1; j<column; j++)
                        {
                            if(final[j]>result)
                            {
                                result = final[j];
                                result_tag = j;
                            }
                        }
                        label10.Text  = dst.Tables[0].Rows[result_tag][0]+"、"+"best result ="+" result_tag";
            }
            catch(Exception c)
            {
                Console.WriteLine("读取数据错误:/n{0}",c.Message);
            }
        }

读取数据错误:/n将 varchar 值 'System.String[]' 转换为数据类型为 int 的列时发生语法错误。
上边是调试时,系统给出的错误,但是我怎么也没找到到底是那里出错拉
请那位大虾帮忙分析一下拉
不胜感激[em18][em18][em18][em18][em18][em18][em18][em18][em18][em18][em18][em18]

回复列表 (共3个回复)

沙发

没有仔细看你的代码,但错误应该解释为,从数据库中的某个列(该列类型为varchar型)的值,赋于给了一个int型变量,因为他们是无法隐式转换的,所以报错。

板凳


那我要怎么办呢??

3 楼

这个,呵呵,不是大问题,但要仔细找,应该VS有提示的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册