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

嗨,我有一个方法,使用查询更新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中的一些值以字符串变量的forms存储在表单中。 然后我将这些字符串变量发送到此方法。 我希望这个方法抓住我的字符串变量并用我的变量值更新我的SQL表。

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

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

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

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

@Sajeetharanpost的替代方法是返回ExecuteNonQuery调用的值

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

当然,你还必须在方法的最后返回一些东西(在finally块之后)。

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

参考

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

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

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

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