Error CS0161は、その署名に戻り値の型を指定する関数が返さない関数を使用して、パスが含まれている場合に発生します値。あなたの場合、this.OpenConnection()
メソッドがfalse
を返すとき、関数は値を返しません。コンパイラによって報告されているから、このエラーを防止するために
、すべてのパスが値を返す必要があります。
public bool user_check(string username, string password)
{
string query = "SELECT username, password from swear_tool where username='" + username + "' and password = '" + password + "'";
if (this.OpenConnection() == true)
{
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader dataReader = cmd.ExecuteReader();
if (dataReader.HasRows)
{
while (dataReader.Read())
{
return true;
}
}
else
{
return false;
}
dataReader.Close();
this.CloseConnection();
}
return false;
}
を私はあなたが
あなたのコードが脆弱であるSQLインジェクションについて知らせるために、この機会を利用あなたはあなたのクエリにユーザー入力を連結しているので、SQLインジェクションへ。あなたは、あなたのreturn
if
内部while
ブロックを書いているので、私はあなたが
public bool user_check(string username, string password){
string query = "SELECT username, password From swear_tool Where "+
"[email protected] and [email protected]";
if (this.OpenConnection() == true){
using(MySqlCommand cmd = new MySqlCommand(query, connection)){
cmd.Parameters.AddWithValue("@uname",usename);
cmd.Parameters.AddWithValue("@password",password);
using(MySqlDataReader dataReader = cmd.ExecuteReader()){
if (dataReader.HasRows){
while(dataReader.Read()){
return true;
}
}
}
}
this.CloseConnection();
}
return false;
}
ニースパラメータ化クエリを使用することをお勧めonly.Besidesだアウトこのトピックチェックthis link
もし 'OpenConnection'が' true'を返さない場合、返されるものは? –
戻ったとき、それ以下のものは無視されます。あなたはまた、最後の2行でコードに到達することができないというエラーを受け取るでしょう – spatbord