【发布时间】:2018-01-31 17:08:31
【问题描述】:
我有一个 XML 文件,其中 XML 的每个标记都是我表中的一列,该代码如下所示:
try
{
SqlCommand makeCols = new SqlCommand
{
CommandText = "ALTER TABLE Devices ADD " + reader.Name + " nvarchar(100)",
CommandType = CommandType.Text,
Connection = conn
};
makeCols.ExecuteNonQuery();
}
catch (Exception)
{
break;
}
然后我有代码用每一列的数据更新 SQL 表,如下所示:
SqlCommand fillCols = new SqlCommand
{
CommandText = "UPDATE Devices SET "+ reader.Name + "=" + reader.Value + ", WHERE ID=1",
CommandType = CommandType.Text,
Connection = conn
};
fillCols.ExecuteNonQuery();
reader.Name 是 XML 标签,reader.Value 是数据。
我的数据如下所示:v2.14、- 0.00 kg/s、-99.00 Deg C 等等。当我尝试更新表时,出现以下错误:Exception Occured while creating table:Incorrect syntax near 'v2'. System.Data.SqlClient.SqlException。
我的问题是,如何在 SQL 表中存储具有. , - / \ 等符号的数据
编辑 - 澄清
Reader 只是一个读取 XML 文件的循环。 reader.Name 是 XML 标记,因此例如 <port1> 变为 port 并成为一列。 reader.Value 介于 <port1> 和 </port1> 之间,需要存储在我的数据库中。 reader.Value 可以有如下符号:. , - / \ %。我只是想知道如何将这些符号存储在数据库中。
【问题讨论】:
-
参数化查询
-
确实 - 基本上,一旦您使用参数化查询,所有这些都消失了,就 值 而言。不过,您仍然需要担心转义表/列名。
-
这些是列名吗?我的...糟糕的数据库
-
更多讨论请看这里:stackoverflow.com/questions/7505808/….
-
这不能完全参数化,因为列不允许是参数。然而,这确实表明设计非常错误。
标签: c# sql-server xml