从查询返回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();
}
}
}
代替CommandObj.ExecuteNonQuery();
,您可以这样做:
return Convert.ToInt32(CommandObj.ExecuteScalar());
您应该只在更新或插入语句上使用ExecuteNonQuery()
。对于返回单个结果的查询,您可以调用返回object
的ExecuteScalar()
,您可以将其转换为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());
}
}