我有两个方法,它们的输入参数类型相似,但参数本身是不同的,用于在方法中建立一个SQL语句。
C#不喜欢这样--"Type Database已经定义了一个名为'DatabaseSearch'的成员,参数类型相同"。
作为一个新手,这在我听来像是我把类或方法的结构设计错了?
也许我应该在方法之外构建SQL语句,然后把它和它的参数传递进来?
// Surname ONLY
public void DatabaseSearch(DataGrid DataGrid, string surname)
{
string database_file_path = @"Data Source=.\MemberDB.db";
string sqlCmd = "Select * FROM Members WHERE Surname = @surname";
using (var con = new SQLiteConnection(database_file_path))
{
using (var cmd = new SQLiteCommand(con))
{
con.Open();
cmd.Parameters.AddWithValue("@surname", surname);
cmd.CommandText = sqlCmd;
var dataAdapter = new SQLiteDataAdapter(cmd);
var dt = new DataTable("Members");
dataAdapter.Fill(dt);
DataGrid.ItemsSource = dt.DefaultView;
dataAdapter.Update(dt);
}
}
}
// Firstname ONLY
public void DatabaseSearch(DataGrid DataGrid, string firstname)
{
string database_file_path = @"Data Source=.\MemberDB.db";
string sqlCmd = "Select * FROM Members WHERE FirstName = @firstname";
using (var con = new SQLiteConnection(database_file_path))
{
using (var cmd = new SQLiteCommand(con))
{
con.Open();
cmd.Parameters.AddWithValue("@firstname", firstname);
cmd.CommandText = sqlCmd;
var dataAdapter = new SQLiteDataAdapter(cmd);
var dt = new DataTable("Members");
dataAdapter.Fill(dt);
DataGrid.ItemsSource = dt.DefaultView;
dataAdapter.Update(dt);
}
}
}
总结一下。
如何拥有两个具有相同类型参数的重载方法?
public void myMethod( int one, string one){
....some stuff done...
}
public void myMethod( int two, string two){
....different stuff done...
}
你可以改变方法名或者改变参数的顺序。第一种方法比较好。
public void DatabaseSearchByFirstName(int one, string one){
// ...some stuff done...
}
public void DatabaseSearchBySurName(int two, string two){
// ...different stuff done...
}