0

我在 C# 中编写了一个脚本,以使用 ComboBox 上的某个参数获取数据库的索引号。

private int category(string id) {
        int identity = 0;
        try
        {
            MySqlConnection conn = new MySqlConnection(connection.mysqlconnectionbuilder());
            conn.Open();
            MySqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT kategori.no FROM kategori WHERE kategori.kategori = @id";
            cmd.Parameters.AddWithValue("@id", id);
            cmd.CommandType = CommandType.Text;
            identity = cmd.ExecuteNonQuery();
            conn.Close();
        }
        catch (MySqlException msqe)
        {
            Console.Write(msqe.ToString());
        }
        return identity;
    }

我想根据名称示例获取索引号。"好莱坞电影" --> ID : 2 (in DB) 上面脚本的结果是-1。

如何解决?提前致谢。

4

2 回答 2

2

ExecuteScalar()如果要获取单个值,请使用。

identity = Convert.ToInt32(cmd.ExecuteScalar());
于 2012-12-31T05:06:08.630 回答
0

ExecuteNonQuery将返回受影响的行数。

它用于插入、更新或删除。它返回一个整数,指定受影响的行数。

所以你需要使用ExecuteScalar它返回查询返回的结果集中第一行的第一列

“对于 UPDATE、INSERT 和 DELETE 语句,返回值是受命令影响的行数。对于所有其他类型的语句,返回值是 -1。如果发生回滚,返回值也是 -1。 "

identity = Int.Parse(cmd.ExecuteScalar());
于 2012-12-31T05:12:53.233 回答