我正在尝试使用Perl DBI模块连接到SQL Server,我尝试了所有连接字符串格式,但Perl仍然抛出无效的连接字符串错误。
我已经尝试过perl僧侣网站上提供的代码段。
// Put this near the top of the file
#import <React/RCTUtils.h>
...
// Put this where you need access to the presented view controller
UIViewController *presentedViewController = RCTPresentedViewController();
预期结果是连接到数据库。
失败:[Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。 [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] ConnectionOpen(Connect())。 (SQL-01000)[状态现在是01000 01S00] [Microsoft] [ODBC SQL Server驱动程序] perl.pl第16行处的连接字符串属性(SQL-01S00)无效。无法打开数据库+:[Microsoft] [ODBC SQL服务器驱动程序] [DBNETLIB] SQL Server不存在或访问被拒绝。 (SQL-08001)[状态现在是08001,现在是01000]无效的连接字符串属性(SQL-01S00)
答案 0 :(得分:2)
帖子中以+
开头的行
+tabase=$database_name;uid=$database_user;pwd=$database_pass;';
+: $DBI::errstr\n";
错误地从perlmonks.org复制并粘贴了。前面的+
符号是约定,表示将长行分开。您应该删除+
并将该行连接到上一行,这样您的代码才能读取
my $DSN = 'driver={SQL Server};server=$server_name;database=$database_name;uid=$database_user;pwd=$database_pass;';
my $dbh = DBI->connect("DBI:ODBC:$DSN") || die "Couldn't open database: $DBI::errstr\n";
答案 1 :(得分:0)
您的错误消息包含以下内容:
SQL Server不存在或访问被拒绝
您的设置代码包含以下内容:
connect()
'00 .120.124.1; 3181'不是有效的服务器名称或IP地址。您应该更正“ IP地址”部分(该地址不能以“ 00”开头),并将端口移到一个单独的参数中。
您还将用户名和密码作为DSN的一部分。我不知道DBD :: ODBC是否支持该用法(date.h中未提及),但是将它们作为my $server_name = '00.120.124.1'; # But this needs to be corrected
my $server_port = 3181;
my $database_name = 'abcd';
my $database_user = 'kkkk';
my $database_pass = 'password';
my $DSN = "driver={SQL Server};server=$server_name;port=$server_port;database=$database_name";
my $dbh = DBI->connect("DBI:ODBC:$DSN", $database_user, $database_pass)
|| die "Couldn't open database: $DBI::errstr\n";
调用的单独参数更为传统。
总而言之,我认为您想要更多类似这样的东西:
$DSN
还要注意,我已经将用于创建$server_name
变量的引号字符从单引号更改为双引号。变量不会以引号引起来,因此您在DSN中未获得def process_form_data(request, form_list):
instance = Withdrawal()
form_data = [form.cleaned_data for form in form_list]
amount = form_data[0]['amount']
user = Withdrawal.objects.create(user=request.user, amount=amount)
user.save()
等的值。
答案 2 :(得分:0)
更好的连接方法是使用DBD :: Sybase模块。该名称不建议使用,但SQL Server从Sybase继承。这样就可以避免ODBC。 http://metacpan.org/pod/DBD::Sybase#Using-DBD::Sybase-with-MS-SQL