我有两个功能:
partial class Database
{
public void Insert(string table, params string[] values)
{
string query = "INSERT INTO [{0}] VALUES ('{1}')";
ExecuteNonQuery(string.Format(query, table, string.Join("','", values)));
}
public string Insert(string table, string returnedColumn, params string[] values)
{
string query = "INSERT INTO [{0}] OUTPUT INSERTED.{1} VALUES ('{2}')";
return ExecuteScalar(string.Format(query, table, returnedColumn, string.Join("','", values))).ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
它们都INSERT在数据库中的表上执行.不同之处在于,第一个只将数据插入数据库,第二个也使用OUTPUTSQL中的关键字从插入行中的一个列返回一个值.
问题是当我试图调用第一个函数时,编译器会调用第二个函数.所以,例如,如果我有这个代码:
Database DB = new Database();
DB.Insert("tableName", "some data");
Run Code Online (Sandbox Code Playgroud)
有什么问题,如何解决?谢谢.
您可以将第二个参数包装在一个数组中,这将强制您想要选择的重载:
DB.Insert("tableName", new[] { "some data" });
Run Code Online (Sandbox Code Playgroud)