c#构造函数有2个参数,但声称它没有接受两个参数的构造函数
本文关键字:参数 构造函数 两个 2个 | 更新日期: 2023-09-27 18:17:26
这就是我的问题。我有一个名为Login的类,它将用于登录和创建新的登录帐户。
我创建了一个不带参数的Login构造函数
public Login()
{
_gloID = 0;
_Username = null;
_Password = null;
_Note = null;
_Active = false;
_Status = null;
_gvoID = 0;
_DateModified = new DateTime(1901, 1, 1);
_ModifiedBy = 0;
}
我还创建了一个Login构造函数,它接受两个参数。此构造函数获取用户名和密码,然后从数据库收集其余信息。
public Login(string username, string password)
{
// Declarations
uint gloid = 0, gvoid = 0, modifiedby = 0;
string note = null, status = null;
bool active = false;
DateTime datemodified = new DateTime(1901, 1, 1);
// Command
string query = string.Format("SELECT glo_id, glo_note, glo_active, glo_status, gvo_id, date_modified, modified_by FROM gfrc_login" +
" WHERE glo_username = '{0}' AND glo_password = '{1}'", username, password);
try
{
using (conn)
{
conn.Open();
cmd = new OleDbCommand(query, conn);
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
gloid = Convert.ToUInt32(rdr.GetString(0));
note = rdr.GetString(1).ToString();
active = Convert.ToBoolean(rdr.GetString(2));
status = rdr.GetString(3).ToString();
gvoid = Convert.ToUInt32(rdr.GetString(4));
datemodified = Convert.ToDateTime(rdr.GetString(5));
modifiedby = Convert.ToUInt32(rdr.GetString(6));
}
}
}
finally
{
if (rdr != null)
rdr.Close();
}
if (conn != null)
{
conn.Close();
}
_gloID = gloid;
_Username = username;
_Password = password;
_Note = note;
_Active = active;
_Status = status;
_gvoID = gvoid;
_DateModified = datemodified;
_ModifiedBy = modifiedby;
}
注意,所有的数据库连接变量都是在类的开头声明的。
现在,当我尝试运行以下命令时,我得到一个错误说:'Login'不包含一个接受2个参数的构造函数。
protected void Login_Authenticate(object sender, EventArgs e)
{
string username = txtUsername.Text;
string password = CalculateMD5(txtPassword.Text);
Login login = new Login(username, password);
}
编辑:供参考,我有措施防止SQL注入在我的代码的其余部分。
您可能指的是两个不同的Login
类。尝试指定全名(使用名称空间),看看会发生什么。
您正在调用的类也称为Login
,我可以从生成的事件处理程序中看出。
必须使用类型的完整名称空间,或者将类重命名为其他名称。
例如:protected void Login_Authenticate(object sender, EventArgs e)
{
string username = txtUsername.Text;
string password = CalculateMD5(txtPassword.Text);
My.Namespace.Login login = new My.Namespace.Login(username, password);
}