2016-02-19 69 views
0

我有插入到我的SQL Server CE數據庫的函數。用一個插入插入多個行到sdf文件數據庫

private void update_database(string SQL_string) 
{ 
     DBconnection.Open(); 
     SqlCeCommand SQL_querry = DBconnection.CreateCommand(); 
     SQL_querry.CommandText = SQL_string; 
     SQL_querry.ExecuteNonQuery(); 
     DBconnection.Close(); 
} 

我傳遞給它SQL字符串調用

SQL_string = @"insert into Cities(City, destination, distance) values('liege','aberdeen','386'), ('liege','kassel','348');"; 
update_database(SQL_string); 

,它拋出一個異常:

有解析查詢時出現錯誤。 [令牌行號= 1,令牌行偏移= 81,令牌在錯誤=,]」

其中明確規定,這個問題是用逗號第一組值後... 什麼是最混亂爲我是,通過此sql_string時:

SQL_string = @"insert into Cities(City, destination, distance) values('liege','aberdeen','386');"; 

它的工作沒有任何問題

是否SqlCeCommand接受多行插入缺少什麼我在這裏

+0

從谷歌搜索,SQL CE不支持此插入語法。你嘗試過個別插入語句嗎? – Seano666

+0

我正在谷歌搜索它,但propably無法要求正確的問題找到答案。是的,我嘗試了多個單獨的插入 - 它運作良好。我只是想通過一次插入就可以做到這一點。 –

回答

0

我無法想象爲什麼類似下面的東西不會工作。 (爲了便於閱讀,我分開了幾行)。

var SQL_string = "insert into Cities(City, destination, distance)"; 
SQL_string += " SELECT 'liege', 'aberdeen', '386'"; 
SQL_string += " UNION"; 
SQL_string += " SELECT 'liege', 'kassel', '348'"; 
update_database(SQL_string); 
-1

T'?這個;

SQL_string = @"insert into Cities(City, destination, distance) values('liege','aberdeen','386');"; 
SQL_string += @"insert into Cities(City, destination, distance) values('liege','kassel','348');"; 
update_database(SQL_string); 

微型注意:如果這是一門功課或一個簡單的項目,這可能足以但還有更大的,我建議使用一個框架來處理數據庫。例如;此代碼可疑似乎容易受到SQL注入:)

+0

這實際上不回答我的問題。我現在有評論的答案。它不支持。我試過多次單插入,它的工作。這將是程序的內部數據庫,沒有任何用戶可以訪問它的posibilites。如果最終用戶使用數據庫,那麼他的離線程序會有問題,而不是我;) –

0

您不能在SQL Server Compact Edition中執行此操作。但是,您應該能夠執行單個插入語句,或者從派生表中插入多行。 https://msdn.microsoft.com/en-us/library/ms174633

INSERT INTO Cities(City, destination, distance) 
SELECT s.City, s.Destination, s.distance 
FROM (
    SELECT 'liege' AS CITY, 'aberdeen' AS DESTINATION, '386' AS DISTANCE 
    UNION ALL 
    SELECT 'liege' AS CITY, 'kassel' AS DESTINATION, '348' AS DISTANCE 
) s