我在寫一個小程序,它將csv文件轉換爲一系列insert語句插入到數據庫中。該程序不瞭解數據庫,因此所寫的語句是一次性的,它們不能是動態的。在c#中生成sql語句 - 將tabe值插入到新表中
現在,每個數據集都有自己的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(如果「數據集」在數據庫中不存在)或現有的GUID(如果「數據集的存在,讓現有的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
);
這是一個很好的(甚至是有效的?)這種方式嗎?
您有SQL注入漏洞。 – SLaks
我有一個函數可以在插入數據之前用''替換任何逗號。我仍在研究更多措施,但在運行此代碼之前應對數據進行消毒。 –
您應該使用參數。 – SLaks