是否可以从函数中只调用一行?

Is it possible to call only one line out from function?

NpgsqlCommand upCmd = new NpgsqlCommand("UPDATE Masina SET nosaukums=@nosaukums,svars=@svars,marka=@marka,modelis=@modelis,sedvietas=@sedvietas WHERE ID=@id", ncon);
Parametri(upCmd);

NpgsqlCommand addCmd = new NpgsqlCommand("INSERT INTO Masina (id,nosaukums,svars,marka,modelis,sedvietas) VALUES(@id,@nosaukums,@svars,@marka,@modelis,@sedvietas)", ncon);
Parametri(addCmd);

NpgsqlCommand delCmd = new NpgsqlCommand("DELETE FROM Masina WHERE id=@id", ncon);
delCmd.Parameters.Add(new NpgsqlParameter("@id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "id"));

我为 upCmdaddCmd 创建了函数 Parametri,因为它们具有完全相同的行。我也可以对 delCmd 使用相同的功能吗?是否可以只调用一行进行删除?

类似于Parametri(delCmd, *call only id*);

参数()代码:

static void Parametri(NpgsqlCommand cmd)
{
    cmd.Parameters.Add(new NpgsqlParameter("@id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "id"));
    cmd.Parameters.Add(new NpgsqlParameter("@nosaukums", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "nosaukums"));
    cmd.Parameters.Add(new NpgsqlParameter("@svars", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "svars"));
    cmd.Parameters.Add(new NpgsqlParameter("@marka", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "marka"));
    cmd.Parameters.Add(new NpgsqlParameter("@modelis", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "modelis"));
    cmd.Parameters.Add(new NpgsqlParameter("@sedvietas", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "sedvietas"));
}

您必须向函数添加一个参数,您可以使用它来确定函数是应该添加所有参数,还是只添加 ID 参数。

类似于

static void Parametri(NpgsqlCommand cmd, bool justId)
    {
        cmd.Parameters.Add(new NpgsqlParameter("@id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "id"));
        if(justId){return;}
        cmd.Parameters.Add(new NpgsqlParameter("@nosaukums", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "nosaukums"));
        cmd.Parameters.Add(new NpgsqlParameter("@svars", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "svars"));
        cmd.Parameters.Add(new NpgsqlParameter("@marka", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "marka"));
        cmd.Parameters.Add(new NpgsqlParameter("@modelis", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "modelis"));
        cmd.Parameters.Add(new NpgsqlParameter("@sedvietas", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "sedvietas"));
    }

编辑:

您可以使用可选参数来避免每次调用都必须传入布尔值:

static void Parametri(NpgsqlCommand cmd, bool justId = false)
    {
        cmd.Parameters.Add(new NpgsqlParameter("@id", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "id"));
        if(justId){return;}
        cmd.Parameters.Add(new NpgsqlParameter("@nosaukums", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "nosaukums"));
        cmd.Parameters.Add(new NpgsqlParameter("@svars", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "svars"));
        cmd.Parameters.Add(new NpgsqlParameter("@marka", NpgsqlTypes.NpgsqlDbType.Varchar, 255, "marka"));
        cmd.Parameters.Add(new NpgsqlParameter("@modelis", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "modelis"));
        cmd.Parameters.Add(new NpgsqlParameter("@sedvietas", NpgsqlTypes.NpgsqlDbType.Integer, sizeof(int), "sedvietas"));
    }

然后您可以使用

调用该函数
Parametri(upCmd);
Parametri(addCmd);
Parametri(delCmd, true);