0

我有插入我的 SQL Server 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);

它抛出一个异常:

解析查询时出错。[令牌行号=1,令牌行偏移量=81,错误令牌=,]"

这清楚地表明,问题在于第一组值之后的逗号......对我来说最令人困惑的是,当传递这个 sql_string 时:

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

它可以正常工作。

SqlCeCommand接受多行插入吗?我在这里想念什么?

4

3 回答 3

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);
于 2016-02-19T17:11:45.377 回答
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
于 2016-02-19T17:26:35.910 回答
-2

尝试这个;

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);

小提示:如果这是一个家庭作业或一个简单的项目,这可能就足够了,但对于任何更大的事情,我建议使用框架来处理 DB。例如; 这段代码看起来很容易受到 SQL 注入的攻击 :)

于 2016-02-19T17:01:55.223 回答