string widgets = MercatorUi.Globals.CurrentUserRecord.WIDGETS;
DataTable dt;
if (string.IsNullOrEmpty(widgets))
{
    dt = new DataTable("Widgets");
    dt.Columns.Add("file", typeof(string));
    dt.Columns.Add("location", typeof(System.Drawing.Point));
    dt.Columns.Add("className", typeof(string));
    dt.Columns.Add("size", typeof(System.Drawing.Size));
}
else
{
    DataSet ds = Api.DataSetFromXmlString(widgets);
    dt = ds.Tables[0];
}

// ici on effectue des modifications sur la DataTable dt

string widgetsNew;
if (dt.Rows.Count == 0)
    widgetsNew = "";
else
    widgetsNew = Api.DataTableToXmlString(dt);

using (SqlCommand cmd = new SqlCommand("update USERS set widgets = @widgetsNew where id = @id"))
{
    cmd.Parameters.AddWithValue("@widgetsNew", widgetsNew).SqlDbType = SqlDbType.VarChar;
    cmd.Parameters.AddWithValue("@id", Globals.UserId).SqlDbType = SqlDbType.Char;
    Api.SqlExec(MercatorUi.Globals.RepData, cmd);
}