This commit is contained in:
Lunny Xiao 2013-12-22 00:09:56 +08:00
commit 112bc13fe9
1 changed files with 19 additions and 5 deletions

View File

@ -16,16 +16,30 @@ type mssql struct {
quoteFilter Filter quoteFilter Filter
} }
type mssqlParser struct { type odbcParser struct {
} }
func (p *mssqlParser) parse(driverName, dataSourceName string) (*uri, error) { func (p *odbcParser) parse(driverName, dataSourceName string) (*uri, error) {
return &uri{dbName: "xorm_test", dbType: MSSQL}, nil kv := strings.Split(dataSourceName, ";")
var dbName string
for _, c := range kv {
vv := strings.Split(strings.TrimSpace(c), "=")
if len(vv) == 2 {
switch strings.ToLower(vv[0]) {
case "database":
dbName = vv[1]
}
}
}
if dbName == "" {
return nil, errors.New("no db name provided")
}
return &uri{dbName: dbName, dbType: MSSQL}, nil
} }
func (db *mssql) Init(drivername, uri string) error { func (db *mssql) Init(drivername, uri string) error {
db.quoteFilter = &QuoteFilter{} db.quoteFilter = &QuoteFilter{}
return db.base.init(&mssqlParser{}, drivername, uri) return db.base.init(&odbcParser{}, drivername, uri)
} }
func (db *mssql) SqlType(c *Column) string { func (db *mssql) SqlType(c *Column) string {
@ -153,7 +167,7 @@ where a.object_id=object_id('` + tableName + `')`
if _, ok := sqlTypes[ct]; ok { if _, ok := sqlTypes[ct]; ok {
col.SQLType = SQLType{ct, 0, 0} col.SQLType = SQLType{ct, 0, 0}
} else { } else {
return nil, nil, errors.New(fmt.Sprintf("unknow colType %v", ct)) return nil, nil, errors.New(fmt.Sprintf("unknow colType %v for %v", ct, col))
} }
} }