C# 使用c验证Microsoft Access SQL中是否保留了一个字
我正在为我的学校项目建立一个DAL班。 主要的想法是它是通用的。 在我谈到保留词之前,一切都很好。 我制作了一个使用密码的方法,密码是一个保留字C# 使用c验证Microsoft Access SQL中是否保留了一个字,c#,sql,sql-server,oledb,C#,Sql,Sql Server,Oledb,我正在为我的学校项目建立一个DAL班。 主要的想法是它是通用的。 在我谈到保留词之前,一切都很好。 我制作了一个使用密码的方法,密码是一个保留字 public static void AddRow(string name, object[] values) { string com = "SELECT TOP 1 * FROM " + name; DataTable dt = OleDbhelper.fill(com); if
public static void AddRow(string name, object[] values)
{
string com = "SELECT TOP 1 * FROM " + name;
DataTable dt = OleDbhelper.fill(com);
if (dt.Columns.Count - 1 == values.Length)
{
string sql = "INSERT INTO " + name + " (";
for (int i = 1; i < dt.Columns.Count; i++)
{
if (dt.Columns[i].ColumnName == "Password")
sql += "[";
sql += dt.Columns[i].ColumnName;
if (dt.Columns[i].ColumnName == "Password")
sql += "]";
if (i != dt.Columns.Count - 1)
sql += ",";
else
sql += ") ";
}
sql += "VALUES (";
for (int i = 0; i < values.Length; i++)
{
if (dt.Columns[i + 1].DataType.ToString() == "System.String")
sql += "'" + values[i].ToString() + "'";
else
sql += values[i].ToString();
if (i != dt.Columns.Count - 2)
sql += ",";
else
sql += ") ";
}
OleDbhelper.Execute(sql);
}
}
例如,将行插入一个可以处理所有保留字级别的内容。
我已经上网查了好几个小时了,尝试了不同的方法,但我还是找不到方法。
我也找不到完整的更新列表,只有部分列表只包含部分保留字
我在这里迷路了。我很乐意接受关于如何解决此问题的任何想法。您无需检查列名是否为保留字,即可决定是否在其周围放置[]s。无论名称如何,只需添加括号是安全的,这不会破坏任何内容 所以这部分代码:
if (dt.Columns[i].ColumnName == "Password")
sql += "[";
sql += dt.Columns[i].ColumnName;
if (dt.Columns[i].ColumnName == "Password")
sql += "]";
可以改写为:
sql += "[" + dt.Columns[i].ColumnName + "]";
为什么不在列名和表名周围放上[]s,不管它是否保留?sql+=[+dt.Columns[i].ColumnName+]@Rhumborl的想法是该方法适用于任何表。所以我需要它自己去发现它的保留是否准确-在一个非保留字周围放上括号不会破坏任何东西-从MyRandomTableName中选择*与从[MyRandomTableName]@Rhumborl中选择*是一样的,所以你的意思是在每个字周围放上[]?@Rhumborl:请重新发布你的评论作为答案,这样它就可以被投票和接受;
sql += "[" + dt.Columns[i].ColumnName + "]";