public static void CheckDeclareField(bool isStatic, string fieldName, DataTypePointer fieldType, CodeTypeDeclaration typeDeclaration, string defaultValue) { CodeMemberField cmf; foreach (CodeTypeMember ctm in typeDeclaration.Members) { cmf = ctm as CodeMemberField; if (cmf != null) { if (string.CompareOrdinal(cmf.Name, fieldName) == 0) { return; } } } cmf = new CodeMemberField(fieldType.TypeString, fieldName); if (!string.IsNullOrEmpty(defaultValue)) { bool b; object val = VPLUtil.ConvertObject(defaultValue, fieldType.BaseClassType, out b); if (b) { cmf.InitExpression = ObjectCreationCodeGen.ObjectCreationCode(val); } } if (isStatic) { cmf.Attributes |= MemberAttributes.Static; } typeDeclaration.Members.Add(cmf); }
public static object ConvertValueByType(Type t, object v) { bool ok; object ret = VPLUtil.ConvertObject(v, t, out ok); if (ok) { return(ret); } throw new Exception(string.Format(CultureInfo.InvariantCulture, "cannot convert {0} to {1}", v, t)); }
public string ReceiveData(DataTable tblSrc, bool bSilent) { string error = string.Empty; try { if (TableName.Length > 0 && _fields != null && connect != null && tblSrc != null) { if (_fields.Count > 0 && tblSrc.Columns.Count >= _fields.Count) { if (tblSrc.Rows.Count > 0) { bool bNeedUpdate = false; bool bNeedUpdateRun = false; int i; for (i = 0; i < _fields.Count; i++) { if (_fields[i].Indexed) { bNeedUpdate = true; break; } } EnumParameterStyle pStyle = connect.ConnectionObject.ParameterStyle; string n1 = connect.ConnectionObject.NameDelimiterBegin; string n2 = connect.ConnectionObject.NameDelimiterEnd; string sInsert = StringUtility.FormatInvString( "INSERT INTO {0}{1}{2} ({0}{3}{2}", n1, TableName, n2, _fields[0].Name); string sValues = _fields[0].GetParameterName(pStyle); string sUpdate = StringUtility.FormatInvString( "UPDATE {0}{1}{2} SET ", n1, TableName, n2); string sExist; if (connect.ConnectionObject.IsJet || connect.ConnectionObject.IsMSSQL) { sExist = StringUtility.FormatInvString( "SELECT TOP 1 1 FROM {0}{1}{2} WHERE ", n1, TableName, n2); } else { sExist = StringUtility.FormatInvString( "SELECT 1 FROM {0}{1}{2} WHERE ", n1, TableName, n2); } string sWhere = ""; int k = 0, n = 0; if (bNeedUpdate) { if (_fields[0].Indexed) { sWhere = StringUtility.FormatInvString( "{0}{1}{2}={3}", n1, _fields[0].Name, n2, _fields[0].GetParameterName(pStyle)); } else { sUpdate += StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[0].Name, n2, _fields[0].GetParameterName(pStyle)); k++; } for (i = 0; i < _fields.Count; i++) { if (_fields[i].Indexed) { if (n == 0) { sExist += StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle)); } else { sExist += StringUtility.FormatInvString(" AND {0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle)); } n++; } } } for (i = 1; i < _fields.Count; i++) { sInsert += StringUtility.FormatInvString(",{0}{1}{2}", n1, _fields[i].Name, n2); sValues += "," + _fields[i].GetParameterName(pStyle); if (bNeedUpdate) { if (_fields[i].Indexed) { if (sWhere.Length == 0) { sWhere = StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle)); } else { sWhere += StringUtility.FormatInvString(" AND {0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle)); } } else { if (k == 0) { sUpdate += StringUtility.FormatInvString("{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle)); } else { sUpdate += StringUtility.FormatInvString(",{0}{1}{2}={3}", n1, _fields[i].Name, n2, _fields[i].GetParameterName(pStyle)); } k++; } } } if (bNeedUpdate && k > 0) { bNeedUpdateRun = true; } sInsert += ") VALUES ("; sInsert += sValues; sInsert += ")"; // connect.ConnectionObject.Open(); // if (connect.ConnectionObject.IsMSSQL) { dbWrapper dbHelp = new dbWrapper(); dbHelp.CreateCommand(connect.ConnectionObject); string sHelp = string.Format(CultureInfo.InvariantCulture, "SET IDENTITY_INSERT {0} ON", TableName); dbHelp.SetCommandText(sHelp); dbHelp.ExecuteNonQuery(); } // dbWrapper dbUpdate = null; dbWrapper dbExists = null; dbWrapper dbInsert = new dbWrapper(); dbInsert.CreateCommand(connect.ConnectionObject); dbInsert.SetCommandText(sInsert); // object vExist; bool bInsert; // for (i = 0; i < _fields.Count; i++) { dbInsert.AddCommandParameter(_fields[i], pStyle); } // if (bNeedUpdate) { if (bNeedUpdateRun) { dbUpdate = new dbWrapper(); dbUpdate.CreateCommand(connect.ConnectionObject); dbUpdate.SetCommandText(StringUtility.FormatInvString("{0} WHERE {1}", sUpdate, sWhere)); } dbExists = new dbWrapper(); dbExists.CreateCommand(connect.ConnectionObject); dbExists.SetCommandText(sExist); for (i = 0; i < _fields.Count; i++) { if (_fields[i].Indexed) { dbExists.AddCommandParameter(_fields[i], pStyle); } else { if (bNeedUpdateRun) { dbUpdate.AddCommandParameter(_fields[i], pStyle); } } } if (bNeedUpdateRun) { for (i = 0; i < _fields.Count; i++) { if (_fields[i].Indexed) { dbUpdate.AddCommandParameter(_fields[i], pStyle); } } } } for (int m = 0; m < tblSrc.Rows.Count; m++) { bInsert = true; if (bNeedUpdate) { k = 0; for (i = 0; i < _fields.Count; i++) { if (_fields[i].Indexed) { dbExists.SetParameterValue(k, tblSrc.Rows[m][i]); k++; } } vExist = dbExists.ExecuteScalar(); if (vExist != null && vExist != System.DBNull.Value) { bInsert = false; } if (!bInsert) { if (bNeedUpdateRun) { k = 0; for (i = 0; i < _fields.Count; i++) { if (!_fields[i].Indexed) { if (dbUpdate.Parameters[k].DbType == System.Data.DbType.Binary) { object v = tblSrc.Rows[m][i]; if (v == null || v == System.DBNull.Value) { dbUpdate.Parameters[k].Value = System.DBNull.Value; } else { string s = v.ToString(); byte[] bs = StringUtility.StringToBytes(s); dbUpdate.Parameters[k].Value = bs; } } else { dbUpdate.Parameters[k].Value = tblSrc.Rows[m][i]; } k++; } } for (i = 0; i < _fields.Count; i++) { if (_fields[i].Indexed) { if (dbUpdate.Parameters[k].DbType == System.Data.DbType.Binary) { object v = tblSrc.Rows[m][i]; if (v == null || v == System.DBNull.Value) { dbUpdate.Parameters[k].Value = System.DBNull.Value; } else { string s = v.ToString(); byte[] bs = StringUtility.StringToBytes(s); dbUpdate.Parameters[k].Value = bs; } } else { dbUpdate.Parameters[k].Value = tblSrc.Rows[m][i]; } k++; } } dbUpdate.ExecuteNonQuery(); } } } if (bInsert) { for (i = 0; i < _fields.Count; i++) { object v = tblSrc.Rows[m][i]; if (v == null || v == System.DBNull.Value) { dbInsert.Parameters[i].Value = System.DBNull.Value; } else { if (dbInsert.Parameters[i].DbType == System.Data.DbType.Binary) { string s = v.ToString(); byte[] bs = StringUtility.StringToBytes(s); dbInsert.Parameters[i].Value = bs; } else { bool b; object v2 = VPLUtil.ConvertObject(v, EPField.ToSystemType(dbInsert.Parameters[i].DbType), out b); dbInsert.Parameters[i].Value = v2; } } } dbInsert.ExecuteNonQuery(); } } if (connect.ConnectionObject.IsMSSQL) { dbWrapper dbHelp = new dbWrapper(); dbHelp.CreateCommand(connect.ConnectionObject); string sHelp = string.Format(CultureInfo.InvariantCulture, "SET IDENTITY_INSERT {0} OFF", TableName); dbHelp.SetCommandText(sHelp); dbHelp.ExecuteNonQuery(); } connect.ConnectionObject.Close(); // } } } } catch (Exception er) { error = ExceptionLimnorDatabase.FormExceptionText(er, "Error saving data to database"); TraceLogClass.TraceLog.ShowMessageBox = !bSilent; TraceLogClass.TraceLog.Log(er); } finally { connect.ConnectionObject.Close(); } return(error); }
public override void SetValue(object component, object value) { bool o; _owner.IsFieldImage[_idx] = (bool)VPLUtil.ConvertObject(value, _type, out o); }