是否可以从函数中只调用一行?
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"));
我为 upCmd
和 addCmd
创建了函数 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);
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"));
我为 upCmd
和 addCmd
创建了函数 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);