首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCL tdbc命令行参数

TCL tdbc命令行参数
EN

Stack Overflow用户
提问于 2014-11-14 03:39:13
回答 1查看 596关注 0票数 0

我试图连接到带有命令行参数的数据库,但在执行"2“时,命令名"2”无效。

我已经搜索了相当多,找不到任何solution...here是我的代码。

代码语言:javascript
复制
package require tdbc::mysql

tdbc::mysql::connection create db1 -database $argv[2] -user $argv[3] -password $argv[4]

db1 allrows {create table Grades (TNumber char(8), CourseID char(7), Grade char(1, foreign key(TNumber) references Students(TNumber))}

set s [db prepare 
{
INSERT into Grades values (00003256,CSC4300,A)
}] 
set s [db prepare 
{
INSERT into Grades values (00012345,CSC2110,D)
}] 
set s [db prepare 
{
INSERT into Grades values (00012345,CSC2110,D)
}] 
set s [db prepare 
{
INSERT into Grades values (00001423,BIO1010,D)
}] 
set s [db prepare 
{
INSERT into Grades values (00015366,CSC2110,C)
}] 
set s [db prepare 
{
INSERT into Grades values (00003256,CSC4100,A)
}] 
set s [db prepare 
{
INSERT into Grades values (00003256,CSC2110,A)
}] 


db1 close

编辑:

当我试图在第一个db行运行修改后的代码时,我收到了一个错误:

代码语言:javascript
复制
if{[catch {
package require tdbc::mysql
tdbc::mysql::connection create db -user [lindex $argv 2] -db [lindex $argv 1] -password [lindex $argv 3]

db allrows {create table Grades (TNumber char(8), CourseID char(7), Grade char(1, foreign key(TNumber) references Students(TNumber))}

db allrows {db prepare {INSERT into Grades values ('00003256','CSC4300','A')}}


    mysqlclose $s
} res]} {
puts $res
}

以下是错误:

代码语言:javascript
复制
coursework@coursework:~/Desktop$ tclsh p4.tcl localhost students root coursework
invalid command name "if{1}"
    while executing
"if{[catch {
package require tdbc::mysql
tdbc::mysql::connection create db -user [lindex $argv 2] -db [lindex $argv 1] -password [lindex $argv 3]

db a..."
    (file "p4.tcl" line 1)

我真的不知道tcl,这只是一个在拥挤的情况下的一个项目!谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-14 06:59:47

argv不是一个数组(方括号是访问数组中键的错误语法--它将是parens)。错误消息是,它遇到了$argv2,首先试图计算第二行中的命令2,但失败了。

阿格夫是一份清单。所以,你可以这样做:

代码语言:javascript
复制
foreach name [list nothing1 nothing2 db user pass] val $argv {
  set $name $val
}
connection create db1 -database $db -user $user -password $pass 

或者只是索引参数列表:

代码语言:javascript
复制
connection create db1 -database [lindex $argv 2] -user [lindex $argv 3] -password [lindex $argv 4]

很难判断,因为如果您拥有索引权限,那么您没有指定如何实际调用它,所以第一个示例中没有任何内容,或者第二个示例中的索引可能是正确的,也可能是不正确的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26922502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档