【发布时间】:2021-03-20 19:53:05
【问题描述】:
我对 C# 很陌生。在其他语言中,我习惯于以“准备,然后使用所需参数执行语句”的方式使用 DB,因此我可以将准备好的查询传递给函数并执行所有此类操作。 现在我正在尝试解决这个任务:在不同的上下文中从不同的数据库中获取几乎相同的结果集。就像您有带有文件元数据的“文件”表一样,在一个数据库中它确实有“file_priority”字段,而在另一个数据库中它确实有“file_description”字段等等,但大多数字段是常见的并且处理逻辑几乎相同。
所以我想在外部代码中准备查询并将其与所需的参数值一起传递给数据处理函数(或类)。
我找不到任何执行(将参数值传递给查询)linq2db 查询的示例。
==========UPD=============
好的,例如。让我们谈谈 Perl。
package main1;
use FileProcessor;
my $sth = $dbh->prepare(qq[ SELECT name, extension, file_priority FROM files WHERE file_id = ? ]);
my $processor = new FileProcessor(query => $sth);
my $file_id = $ENV{file_id};
my $file_data = $processor->get_file(id => $file_id);
package main2;
use FileProcessor;
my $sth = $dbh->prepare(qq[ SELECT name, extension, file_description FROM files WHERE file_id = ? ]); # preparing query
my $processor = new FileProcessor(query => $sth);
my $file_id = $ENV{file_id};
my $file_data = $processor->get_file(id => $file_id);
package FileProcessor;
sub new {
my $class = shift;
my $self = {@_};
bless $self, $class;
}
sub get_file {
my $self = shift;
my %params = @_;
$self->{query}->execute($params{$file_id}); #passing params to query
my $file_data = $self->{query}->fetchrow_hashref; # fetching result from DB
# do something with file data
# ...
return $file_data;
}
【问题讨论】:
-
不清楚您到底在寻找什么。你能为你想做的事情提供一个尝试吗?和/或也许提供一个 SQL 示例来解释您希望它如何可重用?
-
查看编辑后的帖子。