【问题标题】:Query result will into an int or a string查询结果将转换为 int 或 string
【发布时间】:2015-01-30 22:13:28
【问题描述】:
string komut = "SELECT Count FROM servers WHERE id = 1";
MySqlDataAdapter da = new MySqlDataAdapter(komut, baglanti);
int result = da;

我想要这样的代码:“SELECT Count FROM Server WHERE id = 1”查询的结果将转换为结果变量。 我怎样才能做到这一点 ?谢谢。

【问题讨论】:

  • 在此处提问之前,您是否阅读过有关 MySqlDataAdapter 的任何内容?我不认为你是第一个试图从数据库中获取价值的人
  • 呃,我知道它发送查询

标签: c# mysql sql database connection


【解决方案1】:

要正确完成这样的目标:

var query = "SELECT COUNT(*) AS Rows FROM [Table] WHERE Id = @Id";

您会这样做以防止 语法查询语言 (SQL) 注入。定义查询后,您将:

private readonly string dbConnection;
private const string query = "SELECT COUNT(*) AS Rows FROM [Table] WHERE Id = @Id";

int? rows;
using(SqlConnection connection = new SqlConnection(dbConnection))
     using(SqlCommand command = new SqlCommand(query, connection))
     {
          connection.Open();
          command.Parameters.Add("@Id", SqlDbType.Int).Value = id;
          // command.Parameters.AddWithValue("@Id", id); // Another approach.
          using(SqlDataReader reader = command.ExecuteReader())
               if(reader.Read())
                    rows = reader["Rows"] as int?;
     }

这应该返回有效行数的integer

重要提示:如果转换为整数失败,int? 将允许返回 null。而不是抛出 Invalid Cast Exception。其次,大量数据被包装在using 中,它将实现IDisposable 方法以释放资源。

其余的应该相对简单。

【讨论】:

    【解决方案2】:

    sql 查询无效。

    count 函数需要一个类似 count(*) 的参数

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-28
      相关资源
      最近更新 更多