使用一次插入将多行插入 sdf 文件数据库
Insert multiple rows into sdf file database with one insert
我有功能可以插入我的 SQL 服务器 CE 数据库。
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);
并抛出异常:
There was an error parsing the query. [ Token line number = 1,Token line offset = 81,Token in error = , ]"
这清楚地表明,问题出在第一组值之后的逗号...
最让我困惑的是,当传递这个 sql_string:
SQL_string = @"insert into Cities(City, destination, distance) values('liege','aberdeen','386');";
它没有任何问题。
SqlCeCommand
是否接受多行插入?我在这里错过了什么?
试试这个;
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 注入 :)
我无法想象为什么像下面这样的东西不起作用。 (为了便于阅读,我将行分开了)。
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);
您不能在 SQL 服务器精简版中执行此操作。但是,您应该能够执行单独的插入语句,或者从派生的 table 中插入多行。 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
我有功能可以插入我的 SQL 服务器 CE 数据库。
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);
并抛出异常:
There was an error parsing the query. [ Token line number = 1,Token line offset = 81,Token in error = , ]"
这清楚地表明,问题出在第一组值之后的逗号... 最让我困惑的是,当传递这个 sql_string:
SQL_string = @"insert into Cities(City, destination, distance) values('liege','aberdeen','386');";
它没有任何问题。
SqlCeCommand
是否接受多行插入?我在这里错过了什么?
试试这个;
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 注入 :)
我无法想象为什么像下面这样的东西不起作用。 (为了便于阅读,我将行分开了)。
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);
您不能在 SQL 服务器精简版中执行此操作。但是,您应该能够执行单独的插入语句,或者从派生的 table 中插入多行。 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