/// <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); }
/// <summary> /// 增加一条记录到数据库中 /// </summary> /// <returns>如果验证正常返回真,否则返回假</returns> public bool AddNewRec(string p_strTableName) { OleDbConnection dbConn = m_Conn.GetConn(); string strSql = ""; string strFields = ""; string strVals = ""; int iFieldNum = 0; int iNum = 0; string strFieldName = ""; string[] ary = null; string strVal = ""; bool bRet = true; bool bExitFor = false; strSql = "insert into " + p_strTableName + "("; iFieldNum = m_Ary.Count; for (iNum = 0; iNum < iFieldNum; iNum++) { ary = (string[])m_Ary[iNum]; strVal = ary[2].Trim(); strFieldName = ary[0].Trim(); bExitFor = false; switch (ary[1].Trim()) { case "c": strFields = strFields + strFieldName + ","; if (strVal == null || strVal == "") { strVal = " "; } strVals = strVals + "'" + strVal + "',"; break; case "i": if (IsInt(strVal)) { strFields = strFields + strFieldName + ","; strVals = strVals + strVal + ","; } else { AddErr(strFieldName + "应为整数" + "m_err"); bRet = false; bExitFor = true; } break; case "d": if (IsNumeric(strVal)) { strFields = strFields + strFieldName + ","; strVals = strVals + strVal + ","; } else { AddErr(strFieldName + "应为数字" + "m_err"); bRet = false; bExitFor = true; } break; case "t": strFields = strFields + strFieldName + ","; strVals = strVals + strVal + ","; break; } if (bExitFor) { //break; } } if (bRet) { strFields = strFields.Substring(0, strFields.Length - 1); strVals = strVals.Substring(0, strVals.Length - 1); strSql = strSql + strFields + ") values(" + strVals + ")"; bRet = m_Conn.Update(strSql); } else { throw new Exception(GetErr()); } return(bRet); }