无法将bool类型隐式转换为字符串

时间:2015-07-05 18:54:41

标签: c# sql sql-server

我正在尝试创建一个检查名称方法,以查看用户是否存在于数据库中。我在一个名为SqlFunctions2.2的类中创建了一个Check()函数/方法。但我的代码中有一个错误,我似乎无法修复。任何帮助都会很感激。谢谢:)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;

namespace Contact_Form
{
   public class SqlFunctions2
    {
       static private SqlConnection conn = new SqlConnection("My string connection here");

       public static string Check(string name)
       { 


           try
           {
               conn.Open();
               int Exist;
               /*Check to see if the username is in the database.*/
               SqlCommand exist_cmd = new SqlCommand("select count(*) from tbl_contact_form where name=@name", conn);
               exist_cmd.Parameters.AddWithValue("@name", name);
               Exist = (int)exist_cmd.ExecuteScalar();


               if (Exist == 1)
               {

                   SqlDataReader myReader = null;
                   SqlCommand myCommand = new SqlCommand("select * from tbl_contact_form where name=@name", conn);
                   myCommand.Parameters.AddWithValue("@name", name);
                   myReader = myCommand.ExecuteReader();
                   while (myReader.Read())
                   {
                       string result_name = myReader["name"].ToString();
                       string result_amount = myReader["amount_borrowed"].ToString();

                       return true; /* error in this line of code...
                                   Cannot implicitly convert type 'bool' to 'string'*/
                   }
               }
               else if(Exist == 0)
               {
                    return false;
                    MessageBox.Show("No such user.");
               }
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.ToString());
           }
           finally
           {
           conn.Close();
           }

       }
    }
}

2 个答案:

答案 0 :(得分:1)

宣布您的函数返回string

 public static string Check(string name)
               ^ Here

您尝试返回boolean值(true或false) 您可以返回字符串值或更改函数以返回布尔值。

虽然,你的代码不应该编译,而是给你一个看起来像这样的错误:

  

错误' Contact_Form.SqlFunctions2.Check(string)':并非所有代码路径都返回值

如果try子句中存在异常,则您的函数似乎不会返回任何值。

另请注意,在此部分中:

else if(Exist == 0)
{
    return false;
    MessageBox.Show("No such user.");
}

在显示消息框之前返回(退出该功能) 也就是说,如果用户不存在,将永远不会显示消息框。

答案 1 :(得分:1)

方法检查的类型为String,因为要返回bool,所以必须将方法Check更改为:

public static bool Check(string name)

正如你所看到的,它现在有一种bool,现在可以接受bool return语句了。

要么是这样,或者如果您希望它返回一个字符串说真或假,您必须使用return "true";return "false";,以便系统可以正确识别其类型。