public void Update(Data.Document doc, IList <Query.DocumentResultForSort> docs) { StringBuilder sql = new StringBuilder(); sql.AppendFormat("update {0} set ", Table.DBTableName); int i = 0; foreach (Data.FieldValue fv in doc.FieldValues) { string value; if (fv.Value == null) { value = "NULL"; } else { switch (fv.Type) { case Hubble.Core.Data.DataType.Varchar: case Hubble.Core.Data.DataType.NVarchar: case Hubble.Core.Data.DataType.Char: case Hubble.Core.Data.DataType.NChar: case Hubble.Core.Data.DataType.Data: value = string.Format("'{0}'", fv.Value.Replace("'", "''")); break; case Hubble.Core.Data.DataType.DateTime: case Hubble.Core.Data.DataType.Date: case Hubble.Core.Data.DataType.SmallDateTime: DateTime dTime = DateTime.Parse(fv.Value); value = string.Format("'{0}'", dTime.ToString("yyyy-MM-dd HH:mm:ss.fff")); break; case DataType.Float: value = fv.Value; //insertString.AppendFormat(",{0:E}", double.Parse(fv.Value)); //We can change it like this in furture. break; default: value = fv.Value; break; } } if (i++ == 0) { sql.AppendFormat("[{0}]={1}", fv.FieldName, value); } else { sql.AppendFormat(",[{0}]={1}", fv.FieldName, value); } } if (DocIdReplaceField == null) { sql.Append(" where docId in ("); } else { sql.AppendFormat(" where {0} in (", DocIdReplaceField); } i = 0; foreach (Query.DocumentResultForSort docResult in docs) { int docId = docResult.DocId; if (DocIdReplaceField == null) { if (i++ == 0) { sql.AppendFormat("{0}", docId); } else { sql.AppendFormat(",{0}", docId); } } else { long replaceFieldValue = this.DBProvider.GetDocIdReplaceFieldValue(docId); if (i++ == 0) { sql.AppendFormat("{0}", replaceFieldValue); } else { sql.AppendFormat(",{0}", replaceFieldValue); } } } sql.Append(")"); using (SQLiteDataProvider sqlData = new SQLiteDataProvider()) { sqlData.Connect(Table.ConnectionString); sqlData.ExecuteNonQuery(sql.ToString()); } }
public void Update(Data.Document doc, IList <Query.DocumentResultForSort> docs) { StringBuilder sql = new StringBuilder(); sql.AppendFormat("update {0} set ", Table.DBTableName); int i = 0; foreach (Data.FieldValue fv in doc.FieldValues) { string value = fv.Type == Data.DataType.Varchar || fv.Type == Data.DataType.NVarchar || fv.Type == Data.DataType.NChar || fv.Type == Data.DataType.Char || fv.Type == Data.DataType.Date || fv.Type == Data.DataType.DateTime || fv.Type == Data.DataType.SmallDateTime || fv.Type == Data.DataType.Data ? string.Format("'{0}'", fv.Value.Replace("'", "''")) : fv.Value; if (i++ == 0) { sql.AppendFormat("{0}={1}", fv.FieldName, value); } else { sql.AppendFormat(",{0}={1}", fv.FieldName, value); } } if (DocIdReplaceField == null) { sql.Append(" where docId in ("); } else { sql.AppendFormat(" where {0} in (", DocIdReplaceField); } i = 0; foreach (Query.DocumentResultForSort docResult in docs) { int docId = docResult.DocId; if (DocIdReplaceField == null) { if (i++ == 0) { sql.AppendFormat("{0}", docId); } else { sql.AppendFormat(",{0}", docId); } } else { long replaceFieldValue = this.DBProvider.GetDocIdReplaceFieldValue(docId); if (i++ == 0) { sql.AppendFormat("{0}", replaceFieldValue); } else { sql.AppendFormat(",{0}", replaceFieldValue); } } } sql.Append(")"); using (MysqlDataProvider sqlData = new MysqlDataProvider()) { sqlData.Connect(Table.ConnectionString); sqlData.ExcuteSql(sql.ToString()); } }