c# - 在使用 SQL 和 C# 时遇到问题

标签 c# sql-server sql-server-ce

我正在尝试修改数据库中的表,如下所示:

using (SqlCeCommand com = new SqlCeCommand("INSERT INTO RamResults(Result, Date) VALUES(@num, @date)", con))
{
    com.Parameters.AddWithValue("@num", num);
    com.Parameters.AddWithValue("@hostname2", hostname2);
    com.Parameters.AddWithValue("@date", Form1.date);
    com.ExecuteNonQuery();
}

虽然表名有变量前缀(hostname2)。所以我尝试执行以下操作:

("INSERT INTO @hostname2 + RamResults(Result, Date) VALUES(@num, @date)", con))

但是没有运气,有人有解决这个问题的想法吗?

错误信息:

There was an error parsing the query. [ Token line number = 1,Token line offset = 13,Token in error = @hostname2 ]

最佳答案

如果您使用这样的准备语句,@hostname2 将被替换为 'value'
您应该改用 string.Format():

string hostprefix = 'host2_'; // example
string sql = string.Format("INSERT INTO {0}RamResults(Result, Date) "+
                            " VALUES(@num, @date)", hostprefix);
using (SqlCeCommand com = new SqlCeCommand(sql, con))
// ....

但只使用 string.Format 作为您的主机前缀,而不是用于用户输入!这样您就可以防止 SQL 注入(inject)。

关于c# - 在使用 SQL 和 C# 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211646/

相关文章:

sql-server - SSRS 报告输出 '' 空白''而不是最终用户的 0

mysql - 决定数据库需求

c# - 这些 .NET 自动生成的表适配器命令有什么作用?例如UPDATE/INSERT 后跟 SELECT

C# 跨网页保存 cookie 和 session

c# - 基类可以包含对其子类之一的引用吗?

c# - 当企业不想向开发者透露商户详细信息时,如何实现和维护电子商务应用程序?

sql - 在 Microsoft SQL Server 中存储昂贵的数据库计算

c# - 单击后更改 wpf C# 中按钮的颜色并在 2 分钟后保留原始颜色

sql-server - Crystal 报告 - 按国家对城镇进行分组

sql-server - 如何在 SQL Server Compact 中添加默认值?