c# - C# 方法重载 - 2 个具有相似参数的方法
问题描述
我有两种输入参数类型相似的方法,但参数本身不同,用于在方法内构建 SQL 语句。
C# 不喜欢这样 - “类型数据库已经定义了一个名为 '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...
}
推荐阅读
- javascript - 如何获得复选框的正确值而不是 Null?
- sql - 用 SQL 游标更新,最后有变量
- c# - 我想添加从用户那里获得的用户 ID。但我不知道如何使用 request.UserID 字段添加 multipartformdatacontent()
- python - 根据 python 中的唯一值将 2 个 csv 文件拆分为较小的文件集
- macos - 如何使用证书签署文件并在之后查看指纹?
- jquery - Razor Pages ajax 发布错误“SyntaxError: Unexpected token < in JSON at position 0”
- google-apps-script - 谷歌工作表的脚本时间限制
- python - 如何使索引Dataframe中的每一行只有一个对象
- c# - getJson 错误“不允许加载本地”
- c++ - vTaskResume 不恢复 freertos 中的任务