Example #1
0
        /// <summary>
        /// 增加一条记录到数据库中
        /// </summary>
        /// <returns>如果验证正常返回真,否则返回假</returns>
        public bool AddNewRec(string p_strTableName)
        {
            OleDbConnection dbConn = m_Conn.GetConn();

            int iFieldNum = 0;
            int iNum      = 0;

            string strFieldName = "";

            string[] ary      = null;
            string   strVal   = "";
            bool     bRet     = true;
            bool     bExitFor = false;

            iFieldNum = m_Ary.Count;            //字段个数

            string strTmpField = "";
            string strSelect   = "select ";        //select后子句

            for (iNum = 0; iNum < iFieldNum; iNum++)
            {
                ary          = (string[])m_Ary[iNum];
                strFieldName = ary[0].Trim();
                if (iFieldNum == 1)
                {
                    strSelect = strFieldName;                  //只有一个字段
                }
                else if (iNum == iFieldNum - 1)
                {
                    strSelect += strFieldName;                  //最后一个字段
                }
                else
                {
                    strSelect += strFieldName + ",";                //中间的字段
                }

                if (strTmpField == "")
                {
                    strTmpField = strFieldName;
                }
            }
            da = new OleDbDataAdapter(strSelect + "  from  " + p_strTableName, dbConn);
            //gs.util.func.Write("gs====" + strSelect+ "  from  "+p_strTableName);

            if (m_Conn.IsBolTrans())
            {
                da.SelectCommand.Transaction = m_Conn.getTrans();
            }


            OleDbCommand cmd = new OleDbCommand();

            if (m_Conn.IsBolTrans())
            {
                cmd.Transaction = m_Conn.getTrans();
            }
            cmd.Connection = dbConn;
            string strInsertinto = strSelect.Replace("select", " ");         //inser into后子句

            strInsertinto = "INSERT INTO  " + p_strTableName + "(" + strInsertinto + ") values(";

            for (iNum = 0; iNum < iFieldNum; iNum++)
            {
                ary = (string[])m_Ary[iNum];
                if (iFieldNum == 1)
                {
                    strInsertinto += "?)";;                  //只有一个字段
                }
                else if (iNum == iFieldNum - 1)
                {
                    strInsertinto += "?)";                  //最后一个字段
                }
                else
                {
                    strInsertinto += "?,";                  //中间的字段
                }
            }
            cmd.CommandText = strInsertinto;

            DataSet ds = new DataSet();

            da.Fill(ds, p_strTableName);

            for (iNum = 0; iNum < iFieldNum; iNum++)
            {
                ary          = (string[])m_Ary[iNum];
                strVal       = ary[2].Trim();
                strFieldName = ary[0].Trim();
                bExitFor     = false;

                OleDbParameter myDataParameter = new OleDbParameter();
                switch (ary[1].Trim())
                {
                case "c":
                    myDataParameter.ParameterName = "@" + strFieldName;
                    myDataParameter.OleDbType     = OleDbType.Char;
                    myDataParameter.SourceColumn  = strFieldName;
                    cmd.Parameters.Add(myDataParameter);
                    break;

                case "i":
                    if (IsInt(strVal))
                    {
                        myDataParameter.ParameterName = "@" + strFieldName;
                        myDataParameter.OleDbType     = OleDbType.Integer;
                        myDataParameter.SourceColumn  = strFieldName;
                        cmd.Parameters.Add(myDataParameter);
                    }
                    else
                    {
                        AddErr(strFieldName + "应为整数" + "m_err");
                        bRet     = false;
                        bExitFor = true;
                    }
                    break;

                case "d":
                    if (IsNumeric(strVal))
                    {
                        myDataParameter.ParameterName = "@" + strFieldName;
                        myDataParameter.OleDbType     = OleDbType.Double;
                        myDataParameter.SourceColumn  = strFieldName;
                        cmd.Parameters.Add(myDataParameter);
                    }
                    else
                    {
                        AddErr(strFieldName + "应为数字" + "m_err");
                        bRet     = false;
                        bExitFor = true;
                    }
                    break;

                case "dt":
                {
                    myDataParameter.ParameterName = "@" + strFieldName;
                    myDataParameter.OleDbType     = OleDbType.Date;
                    myDataParameter.SourceColumn  = strFieldName;
                    cmd.Parameters.Add(myDataParameter);
                }
                break;

                case "t":
                    //??
                    break;
                }

                if (bExitFor)
                {
                    //break;
                }
            }

            if (bRet)
            {
                DataRow newrow = ds.Tables[p_strTableName].NewRow();
                for (iNum = 0; iNum < iFieldNum; iNum++)
                {
                    ary          = (string[])m_Ary[iNum];
                    strFieldName = ary[0].Trim();
                    string strFieldVal = ary[2].Trim();
                    switch (ary[1].Trim())
                    {
                    case "c":
                        newrow[strFieldName] = strFieldVal;
                        break;

                    case "i":
                        newrow[strFieldName] = int.Parse(strFieldVal);
                        break;

                    case "d":
                        newrow[strFieldName] = double.Parse(strFieldVal);
                        break;

                    case "dt":
                        newrow[strFieldName] = DateTime.Parse(strFieldVal);
                        break;
                    }
                }
                ds.Tables[p_strTableName].Rows.Add(newrow);
                // 插入记录
                try
                {
                    da.InsertCommand = cmd;
                    da.Update(ds.Tables[p_strTableName]);
                    bRet = true;
                }
                catch (Exception ex)
                {
                    bRet = false;
                    gs.util.func.Write("Top3 is err=" + ex.Message);
                    throw ex;
                }
            }
            else
            {
                bRet = false;
                throw new Exception(GetErr());
            }
            return(bRet);
        }