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

时间:2014-05-28 09:07:24

标签: c# mysql visual-studio-2010

您好我有一个使用查询更新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();

            }
        }
    }

这是正在发生的事情。我将TextBox中的一些值以字符串变量的形式存储在表单中。然后我将这些字符串变量发送到此方法。我希望这个方法抓住我的字符串变量并使用我的变量值更新我的SQL表。

我收到错误并非所有代码路径都返回值。

3 个答案:

答案 0 :(得分:10)

您的方法没有返回任何内容,您需要返回成员对象。

如果您不需要返回任何内容,只需更改您的方法签名,

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

答案 1 :(得分:0)

@Sajeetharan帖子的替代方法是返回 ExecuteNonQuery 调用的值

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

当然,您还必须在方法结束时返回一些内容(在最终块之后)。

  

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

Reference

答案 2 :(得分:0)

通常,在更新/插入或删除时,我们不需要返回Member之类的对象。我们应该只返回布尔标志或返回 Nothing

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

如果您什么都不返回,只需将方法修改为

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