从查询返回int值的int类型函数的返回值是什么?

本文关键字:int 返回值 是什么 函数 类型 查询 返回 值的 | 更新日期: 2023-09-27 18:02:45

下面是我的代码。我想要一个'int'类型的函数,它将返回'int'值。在这段代码中的查询返回一个'int'值,但在这段代码中的返回值将是什么?我不能在这里写return get_number。那我该怎么办呢?

我的代码:
    public int CheckMatch(CourseSchedule courseInfo)
    {
        try
        {
            ConnectionObj.Open();
            string get_number = "SELECT count(c_t_id) FROM course_teacher_table WHERE room_number = '" + courseInfo.RoomNumber + "' and class_days = '" + courseInfo.Days + "' and class_time = '" + courseInfo.ClassTime + "'";
            CommandObj.CommandText = get_number;
            CommandObj.ExecuteNonQuery();
            return '???'  
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            if (ConnectionObj != null && ConnectionObj.State == ConnectionState.Open)
            {
                ConnectionObj.Close();
            }
        }
    }

从查询返回int值的int类型函数的返回值是什么?

代替CommandObj.ExecuteNonQuery();,您可以这样做:

return Convert.ToInt32(CommandObj.ExecuteScalar());

您应该只在更新或插入语句上使用ExecuteNonQuery()。对于返回单个结果的查询,您可以调用返回objectExecuteScalar(),您可以将其转换为int

在边注上。我没看到你把参数串联起来。不要那样做。否则,很容易发生sql注入。

您必须使用参数化查询。

这段代码除了从查询中获得一个数字之外,还有几个重要的问题。下面的代码纠正了大部分错误:

public int CheckMatch(CourseSchedule courseInfo)
{
     string get_number = 
          "SELECT count(c_t_id) " +
          " FROM course_teacher_table" +
          " WHERE room_number = @Room AND class_days = @Days AND class_time = @Time";
    //.Net works best when you create a brand new connection object for most queries
    using (var cn As New SqlConnection("connection string here"))
    using (var cmd As New SqlCommand(get_number, cn))
    {
        //I'm guessing at sql column types here. Use the actual column types from the DB.
        cmd.Parameters.Add("@Room", SqlDbType.NVarChar, 5).Value = courseInfo.RoomNumber;
        cmd.Parameters.Add("@Days", SqlDbType.Int).Value = courseInfo.Days;
        cmd.Parameters.Add("@Time", SqlDbType.NVarChar, 20).Value = courseInfo.ClassTime;
        cn.Open();
        return Convert.ToInt32(cmd.ExecuteScalar()); 
    }
}