我正在尝试制作一个实用程序来生成 SQL 表和关系表的插入脚本。
我得到了 C# 中的所有值。
现在我想从脚本中删除一个列名及其值。很可能是标识列。
例如:我拥有的字符串(随着表名不断变化并且变化)
INSERT INTO Core.Customers ([customerId], [customername], [customeradress],[ordernumber])
VALUES (123, N'Rahul', N'244 LIZ MORN', 2334)
现在我知道我必须删除CustomerId
(有时需要替换为@somevariable
)。
请给我一个有效的方法来检索customerId
值和删除列名和值。
我正在寻找一种按列名称查找列值的方法。
我正在做的事情如下 - 我知道它效率低下并且可能导致问题,但现在它工作顺利。
public string GetColumnValueToForDesiredColumnName(string row, TableInfo tableinfo, string NameofColumnTOfindvalueFor)
{
Dictionary<string, string> ValueTypedictionary = new Dictionary<string, string>();
string value = null;
// this code is quite messy - I need some suggestion on this one
string[] plusseperatedinsert = row.Replace("INSERT " + "[" + tableinfo.Schema + "].[" + tableinfo.TableName + "]", string.Empty).Trim().Replace("VALUES", "+").Split('+');
string[] columnvalues = plusseperatedinsert[0].Replace("(", string.Empty).Replace(")", string.Empty).Replace("(", string.Empty).Replace("[", string.Empty).Replace("]", string.Empty).Trim().Split(',');
string[] valuesfield = plusseperatedinsert[1].Replace("(", string.Empty).Replace(")", string.Empty).Replace("(", string.Empty).Replace("[", string.Empty).Replace("]", string.Empty).Trim().Split(',');
for (int index = 0; index < columnvalues.Length; index++)
{
ValueTypedictionary.Add(columnvalues[index], valuesfield[index]);
}
ValueTypedictionary.TryGetValue(NameofColumnTOfindvalueFor, out value);
return value;
}
这将返回 123 作为值。
然后我正在使用
string.Replace("[customerId],", string.empty).Replace(123, string.empty);