我正在尝试创建一个检查名称方法,以查看用户是否存在于数据库中。我在一个名为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();
}
}
}
}
答案 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";
,以便系统可以正确识别其类型。