TableRow: Replacement of DataRow.
This commit is contained in:
17
VAR.DatabaseExplorer/Code/DataTransfer/TableRow.cs
Normal file
17
VAR.DatabaseExplorer/Code/DataTransfer/TableRow.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace VAR.DatabaseExplorer.Code.DataTransfer
|
||||||
|
{
|
||||||
|
public class TableRow
|
||||||
|
{
|
||||||
|
public List<TableCell> Cells { get; } = new List<TableCell>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TableCell
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public object Data { get; set; }
|
||||||
|
public Type DataType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
107
VAR.DatabaseExplorer/Code/TableRowHelper.cs
Normal file
107
VAR.DatabaseExplorer/Code/TableRowHelper.cs
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
using System;
|
||||||
|
using System.Data;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using VAR.DatabaseExplorer.Code.DataTransfer;
|
||||||
|
|
||||||
|
namespace VAR.DatabaseExplorer.Code
|
||||||
|
{
|
||||||
|
public class TableRowHelper
|
||||||
|
{
|
||||||
|
public static TableRow ConvertFromDataRecord(IDataRecord record)
|
||||||
|
{
|
||||||
|
var row = new TableRow();
|
||||||
|
int columnNumber = record.FieldCount;
|
||||||
|
for (int i = 0; i < columnNumber; i++)
|
||||||
|
{
|
||||||
|
TableCell cell = new TableCell
|
||||||
|
{
|
||||||
|
Name = record.GetName(i),
|
||||||
|
Data = record.GetValue(i),
|
||||||
|
DataType = record.GetFieldType(i),
|
||||||
|
};
|
||||||
|
row.Cells.Add(cell);
|
||||||
|
}
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int TableRow_GenerateInsert(TextWriter txtWriter, TableRow row, string destTable)
|
||||||
|
{
|
||||||
|
var nfi = new NumberFormatInfo { NumberDecimalSeparator = "." };
|
||||||
|
|
||||||
|
var sbColumns = new StringBuilder();
|
||||||
|
foreach (TableCell cell in row.Cells)
|
||||||
|
{
|
||||||
|
// El nombre de la columna
|
||||||
|
if (sbColumns.Length > 0) { sbColumns.Append(", "); }
|
||||||
|
sbColumns.AppendFormat("[{0}]", cell.Name);
|
||||||
|
}
|
||||||
|
var sbValues = new StringBuilder();
|
||||||
|
foreach (TableCell cell in row.Cells)
|
||||||
|
{
|
||||||
|
// El valor de la columna
|
||||||
|
if (sbValues.Length > 0) { sbValues.Append(", "); }
|
||||||
|
object valor = cell.Data;
|
||||||
|
if (valor == DBNull.Value || valor == null)
|
||||||
|
{
|
||||||
|
// NULOS
|
||||||
|
sbValues.Append("NULL");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
string type = cell.DataType.Name.ToLower();
|
||||||
|
if (type == "string")
|
||||||
|
{
|
||||||
|
// Cadenas
|
||||||
|
sbValues.AppendFormat("N'{0}'", ((string)valor).Replace("'", "''"));
|
||||||
|
}
|
||||||
|
else if (type == "short" || type == "int16")
|
||||||
|
{
|
||||||
|
// short
|
||||||
|
sbValues.Append(((short)valor).ToString(nfi));
|
||||||
|
}
|
||||||
|
else if (type == "int" || type == "int32")
|
||||||
|
{
|
||||||
|
// int
|
||||||
|
sbValues.Append(((int)valor).ToString(nfi));
|
||||||
|
}
|
||||||
|
else if (type == "long" || type == "int64")
|
||||||
|
{
|
||||||
|
// long
|
||||||
|
sbValues.Append(((long)valor).ToString(nfi));
|
||||||
|
}
|
||||||
|
else if (type == "decimal")
|
||||||
|
{
|
||||||
|
// Decimales
|
||||||
|
sbValues.Append(((decimal)valor).ToString(nfi));
|
||||||
|
}
|
||||||
|
else if (type == "bit" || type == "bool" || type == "boolean")
|
||||||
|
{
|
||||||
|
// Booleanos
|
||||||
|
sbValues.Append(((bool)valor) ? "1" : "0");
|
||||||
|
}
|
||||||
|
else if (type == "byte[]")
|
||||||
|
{
|
||||||
|
// Arrays de bytes (imágenes, archivos etc)
|
||||||
|
sbValues.AppendFormat("0x{0}", BitConverter.ToString(((byte[])valor)).Replace("-", ""));
|
||||||
|
}
|
||||||
|
else if (type == "datetime")
|
||||||
|
{
|
||||||
|
// DateTime
|
||||||
|
sbValues.AppendFormat("'{0}'", ((DateTime)valor).ToString("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Otros
|
||||||
|
sbValues.AppendFormat("'{0}'", valor.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
string strLine = string.Format("INSERT INTO {0} ({1}) VALUES ({2});",
|
||||||
|
destTable, sbColumns.ToString(), sbValues.ToString());
|
||||||
|
txtWriter.WriteLine(strLine);
|
||||||
|
return strLine.Length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -90,12 +90,14 @@
|
|||||||
<Compile Include="Code\DataAccess\TableDA.cs" />
|
<Compile Include="Code\DataAccess\TableDA.cs" />
|
||||||
<Compile Include="Code\DataTransfer\Column.cs" />
|
<Compile Include="Code\DataTransfer\Column.cs" />
|
||||||
<Compile Include="Code\DataTransfer\Database.cs" />
|
<Compile Include="Code\DataTransfer\Database.cs" />
|
||||||
|
<Compile Include="Code\DataTransfer\TableRow.cs" />
|
||||||
<Compile Include="Code\DataTransfer\Procedure.cs" />
|
<Compile Include="Code\DataTransfer\Procedure.cs" />
|
||||||
<Compile Include="Code\DataTransfer\ProcedureDefinition.cs" />
|
<Compile Include="Code\DataTransfer\ProcedureDefinition.cs" />
|
||||||
<Compile Include="Code\DataTransfer\Server.cs" />
|
<Compile Include="Code\DataTransfer\Server.cs" />
|
||||||
<Compile Include="Code\DataTransfer\Table.cs" />
|
<Compile Include="Code\DataTransfer\Table.cs" />
|
||||||
<Compile Include="Code\DataTransfer\User.cs" />
|
<Compile Include="Code\DataTransfer\User.cs" />
|
||||||
<Compile Include="Code\DataTransfer\ViewDefinition.cs" />
|
<Compile Include="Code\DataTransfer\ViewDefinition.cs" />
|
||||||
|
<Compile Include="Code\TableRowHelper.cs" />
|
||||||
<Compile Include="Controls\CustomListView.cs">
|
<Compile Include="Controls\CustomListView.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|||||||
Reference in New Issue
Block a user