CsServer/Server/SQL/SQL.cs

143 lines
3.9 KiB
C#

using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using Server.System;
namespace Server.SQL
{
public class SQL<T>
{
string className;
Regex regex = new Regex(STATICS.PATTERN);
public SQL()
{
className = typeof(T).Name;
}
public string sqlInsert(T instance)
{
List<string> names = new List<string>();
List<string> values = new List<string>();
foreach (FieldInfo field in typeof(T).GetFields())
{
object value = field.GetValue(instance);
if (value == null)
continue;
names.Add(field.Name);
values.Add(value.ToString());
}
StringBuilder qurry = new StringBuilder();
qurry.Append($"INSERT INTO {className} (");
int n = 0;
int count = names.Count;
for(; n < count; n++)
{
qurry.Append(names[n]);
if(n != count - 1)
{
qurry.Append(", ");
}
}
qurry.Append(") VALUES (");
n = 0;
for (; n < count; n++)
{
qurry.Append(values[n]);
if (n != count - 1)
{
qurry.Append(", ");
}
}
qurry.Append(");");
return qurry.ToString();
}
public string sqlUpdate(string[] names, object[] values, string[] wnames, object[] wvalues)
{
StringBuilder qurry = new StringBuilder();
qurry.Append($"UPDATE {className} SET ");
for(int n = 0; n < names.Length; n++)
{
qurry.Append($"{names[n]} = {values[n]}");
if(n < names.Length - 1)
{
qurry.Append(", ");
}
}
qurry.Append(" WHERE ");
for (int n = 0; n < wnames.Length; n++)
{
qurry.Append($"{wnames[n]} = {wvalues[n]}");
if (n < wnames.Length - 1)
{
qurry.Append(", ");
}
}
return qurry.ToString();
}
public string sqlSelect(string[] names, string[] wnames, object[] wvalues)
{
StringBuilder qurry = new StringBuilder();
if(names == null)
{
qurry.Append($"SELECT * FROM {className} ");
}
else
{
qurry.Append("SELECT ");
for(int n = 0; n < names.Length; n++)
{
qurry.Append(names[n]);
if (n < names.Length - 1)
{
qurry.Append(", ");
}
}
qurry.Append($" FROM {className} ");
}
qurry.Append(" WHERE ");
for (int n = 0; n < wnames.Length; n++)
{
qurry.Append($"{wnames[n]} = {wvalues[n]}");
if (n < wnames.Length - 1)
{
qurry.Append(", ");
}
}
return qurry.ToString();
}
public string sqlDelete(string[] wnames, object[] wvalues)
{
StringBuilder qurry = new StringBuilder();
qurry.Append($"DELETE FROM {className}");
qurry.Append(" WHERE ");
for (int n = 0; n < wnames.Length; n++)
{
qurry.Append($"{wnames[n]} = {wvalues[n]}");
if (n < wnames.Length - 1)
{
qurry.Append(", ");
}
}
return qurry.ToString();
}
public string Injection(string data)
{
return regex.Replace(data, "");
}
}
}