获取异常“并非所有代码路径都返回值”

本文关键字:路径 代码 返回值 异常 获取 | 更新日期: 2023-09-27 18:05:43

嗨,我有一个使用查询更新MySQL表的方法。我使用MS Visual Studio和phpmyadmin作为SQL客户端。

方法:

public static Member updateMember(string un, string pass, string name, string surname,                 string mf, string dob, string add, string phone, string email)
    {


        MySqlConnection connection = new MySqlConnection(conn);
        MySqlCommand cmd;
        string query = "UPDATE MEMBER SET Name='" + un + "', Surname='" + surname + "',      MF='" + mf + "', DOB='" + dob + "', Address='" + add + "', PhoneNo='" + phone + "', EMail='" + email + "', UserName='" + un + "', Password='" + pass + "' ";

        tr y
        {

            connection.Open();
            cmd = connection.CreateCommand();
            cmd.CommandText = query;
            cmd.ExecuteNonQuery();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            if (connection.State == System.Data.ConnectionState.Open)
            {
                connection.Close();
            }
        }
    }

事情是这样的。我存储一些值从文本框在字符串变量的形式。然后我把这些字符串变量发送给这个方法。我希望这个方法获取我的字符串变量并用变量的值更新我的SQL表。

我得到一个错误,不是所有的代码路径返回一个值。

获取异常“并非所有代码路径都返回值”

你的方法没有返回任何东西,你需要返回成员对象。

如果你不需要返回任何东西,只需像这样改变你的方法签名,

public static Void updateMember(string un, string pass, string name, string surname,string mf, string dob, string add, string phone, string email)

@Sajeetharan的另一种方法是返回ExecuteNonQuery调用

的值
connection.Open();
cmd = connection.CreateCommand();
cmd.CommandText = query;
return cmd.ExecuteNonQuery();

当然你也必须在你的方法结束时返回一些东西(在finally块之后)。

对于UPDATE、INSERT和DELETE语句,返回值是受该命令影响的行数。当正在插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。对于所有其他类型的语句,返回值为-1。如果发生回滚,返回值也是-1。

参考

通常,我们在更新/插入或删除时不需要返回像Member这样的对象。我们应该只返回一个布尔值标志,或者返回Nothing

如果您返回标志,您应该将其设置为cmd.ExecuteNonQuery() > 0Catch品牌的结果。

如果不返回任何值,只需将方法修改为

public static void updateMember(...)
{
    ....
}