public bool Insert(string TableName, Hashtable Cols)
        {
            int Count = 0;
            if (Cols.Count <= 0)
            {
                return true;
            }            string Fields = "(";
            string Values = "values(";
            foreach (DictionaryEntry item in cols)
            {
                if (Count != 0)
                {
                    Fields += ",";
                    Values += ",";
                }
                Fields += item.Key.ToString();
                Values += item.Value.ToString();
                Count++;
            }
            Fields += ")";
            Values += ")";
            string SqlString = "insert into "+TableName +Fields +Values ;
            return Convert.ToBoolean(ExecuteSql (SqlString ));
        }
        /// <summary>
谁能帮我解释一下,。中间得语句块不是很明白。最后那还弄个count++

解决方案 »

  1.   

                    if (Count != 0)
                    {
                        Fields += ",";
                        Values += ",";
                    }
                    Fields += item.Key.ToString();
                    Values += item.Value.ToString();
                    Count++;Count!=0的时候说明不是第一个元素
    也就是values="values(fields1";这个时候,要加上字符","因为count初始的时候是0
    所以第一次循环一定不走if里面的语句恩~好吧,我承认,小学语文没学好!总结的不好
    自己调试一下就全明白了
      

  2.   

    插入表格中的数据
    Fields += item.Key.ToString();
    Values += item.Value.ToString();
    Count++;
    通过FOREACH循环。
    最后返回布尔值
      

  3.   

    那个count主要是控制Fields和Values这两个值要不要加逗号的,只有count++了,才能与DictionaryEntry item的数量对应啊
      

  4.   

    其实
    if (Count != 0)
                    {
                        Fields += ",";
                        Values += ",";
                    }没必要放在  foreach 循环中,还有那个count++ 
    那个循环  就是把hashtable中的 key与value  拼成一个insert 语句中的 字段部分与值部分 
    如 insert into tablename(f1,f2...) values(v1,v2...)
      

  5.   

    if (Cols.Count <= 0)
                {
                    return true;
                }
    这里为什么返回真,而不是假呢。。没有数据怎么还返回真呢
      

  6.   

    /// <summary>
    /// 负责保存到实据库中
    /// </summary>
    /// <param name="TableName">目的表名</param>
    /// <param name="Hashtable">字段和对应值表</param>
    /// <returns></returns>
    public bool Insert(string TableName, Hashtable Cols)
        {
                int Count = 0;
                //判断字段和对应值表是否为空
                if (Cols.Count <= 0)
                {
                    return true;
                }
                //构造Insert语句 Fields 
                string Fields = "(";
                //构造Insert语句Value
                string Values = "values(";
                foreach (DictionaryEntry item in cols)
                {
                    if (Count != 0)
                    {
                        Fields += ",";
                        Values += ",";
                    }
                    Fields += item.Key.ToString();
                    Values += item.Value.ToString();
                    Count++;
                }
                Fields += ")";
                Values += ")";
                //构造完整insert 
                string SqlString = "insert into "+TableName +Fields +Values ;
                //存入数据库
                return Convert.ToBoolean(ExecuteSql (SqlString ));
            }
            /// <summary>
      

  7.   


    public bool Insert(string TableName, Hashtable Cols)
            {
                int Count = 0;
                if (Cols.Count <= 0)
                {
                    return true;
                }            string Fields = "(";
                string Values = "values(";
                foreach (DictionaryEntry item in cols)
                {                if (Count != 0)
                    {
                        Fields += ",";
                        Values += ",";
                    }//不是第一个(key,value)对的话,就在fields和values中添加逗号                Fields += item.Key.ToString();//通过累加生成(field1,field2,field3,...)字符串
                    Values += item.Value.ToString();//通过累加生成(value1,value2,value3,...)字符串
                    Count++;//用来记录(key,value)对的个数
                }
                Fields += ")";
                Values += ")";
                string SqlString = "insert into "+TableName +Fields +Values ;
                return Convert.ToBoolean(ExecuteSql (SqlString ));
            }
            /// <summary>
      

  8.   

    这个代码效率不是很高哦 
    可以用
    StringBuilder类来执行字符累加计算哦!
      

  9.   

    还不如用stringBuilder把循环的部分串到一起,然后用一个remove(0,1)即可。StringBuilder f,vforeach (DictionaryEntry item in cols)
    {
      f.append(",");
      v.append(",");
      f.append(item.Key.ToString());
      v.append(item.Value.ToString());
    }
    f.remove(0,1);
    v.remove(0,1);然后用f.tostring、v.tostring拼接上其他字符串
      

  10.   

     11楼为什么要remove(0,1)呢
      

  11.   


    他生成的字符串最前面多了个逗号
    ,key1,key2,key3...
    所以要把第一个字符去掉