c# - 在c#中选择查询后获取表的ID

标签 c# mysql sql exception

如何在 C# 中将 ID 作为 Select 查询的变量。 我编写了一个查询,它必须选择具有特定设备类型的所有 ID。

sqlCommand = new SqlCommand("SELECT Id FROM T_Table1 WHERE DeviceType='" + dev + "'" + "", DbConnect());

                int id = (int)sqlCommand.ExecuteScalar();

那是异常(exception):

An unhandled exception of type 'System.InvalidCastException' occurred in test.exe

Additional information: Specified cast is not valid.

最佳答案

首先,您必须检查“id”列的数据库类型。如果是 bigint,则使用 long 而不是 int

其次,您不应将查询字符串添加到 select 语句中。这使黑客以后可以对您的应用程序或服务运行 sql 注入(inject)。

请将参数与 SqlCommand 对象一起使用。

string sql= "SELECT Id FROM T_Table1 WHERE DeviceType=@dev";

SqlCommand command = new SqlCommand(sql, DbConnect());
command.Parameters.Add("@dev", SqlDbType.Text);
command.Parameters["@dev"].Value = dev;

long id = (long)command.ExecuteScalar();

关于c# - 在c#中选择查询后获取表的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42046286/

相关文章:

插入时出现 PHP/Mysql 语法错误

mysql - UNION ALL 返回多个结果

sql - 如何在 SQL 中选择具有最新日期的行?

c# - Stack Exchange OpenID 支持哪些额外值?

c# - 动画停止后直接调用函数 - Unity

c# - Windows 8 上 App.Config 的路径访问被拒绝。如何更新 App.Config?

c# - 向 ExpandoObjects 添加方法

mysql - 将Logstash设置安装到AWS RDS上托管的Mysql。无法连接

java - hibernate 中的 saveOrUpdate() 不起作用,而是执行一个选择查询,该查询在程序中没有提到。 (使用spring+hibernate)

sql - 通过对一个行值进行分组将行转换为列