2016-02-19 73 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