我正在编写一个小程序,将 csv 文件转换为一系列插入语句到数据库中。该程序不了解数据库,因此编写的语句是一次性的,它们不可能是动态的。
现在,每个数据集都有自己的 guid,我想让语句根据其名称查询数据库以确定数据集是否存在。所以我有:
sw.WriteLine("-- Determine if dataset exists from school name");
sw.WriteLine(string.Format(
"INSERT INTO DataSets (Guid, DataSets ) VALUES ('{0}', '{1}') WHERE NOT EXISTS (SELECT * FROM DataSets WHERE DataSetName = '{1}')",
Guid,
DataSetName
));
(如果我错了请纠正我,sql真的不是我的强项)现在,下一个问题是数据集的Guid在其他一些表中使用,例如:
string sql = string.Format(
"INSERT INTO Table1 VALUES ('{0}', '{1}', '{2}', {3}, '{4}');",
object.value1
object.value1
object.value1
object.value1
Guid
'Guid' 不能在 c# 中用作变量,它可以是新的 Guid(如果数据库中不存在'datasets')或现有的 guid(如果存在'datasets',则获取现有的 guid)
所以我需要类似的东西:
string sql = string.Format(
"INSERT INTO Table1 (Data1, Data2, Data3, Data4) VALUES ('{0}', '{1}', '{2}', {3});",
object.value1
object.value1
object.value1
object.value1
string sql2 = string.Format("INSERT INTO Table1 (Data5) VALUES (SELECT Guid FROM Datasets WHERE DataSetName = '{0}');
Guid
);
这是一个好的(甚至是有效的?)方法吗?