Merge pull request #2337 from kemege/db_charset
Add character set options when opening DB connection, default to UTF-8
This commit is contained in:
commit
3125873b4a
3 changed files with 25 additions and 1 deletions
|
|
@ -229,3 +229,9 @@ proc open*(connection, user, password, database: string): TDbConn {.
|
||||||
var errmsg = $mysql.error(result)
|
var errmsg = $mysql.error(result)
|
||||||
db_mysql.close(result)
|
db_mysql.close(result)
|
||||||
dbError(errmsg)
|
dbError(errmsg)
|
||||||
|
|
||||||
|
proc setEncoding*(connection: TDbConn, encoding: string): bool {.
|
||||||
|
tags: [FDb].} =
|
||||||
|
## sets the encoding of a database connection, returns true for
|
||||||
|
## success, false for failure.
|
||||||
|
result = mysql.set_character_set(connection, encoding) == 0
|
||||||
|
|
@ -260,3 +260,9 @@ proc open*(connection, user, password, database: string): TDbConn {.
|
||||||
## the nim db api.
|
## the nim db api.
|
||||||
result = pqsetdbLogin(nil, nil, nil, nil, database, user, password)
|
result = pqsetdbLogin(nil, nil, nil, nil, database, user, password)
|
||||||
if pqStatus(result) != CONNECTION_OK: dbError(result) # result = nil
|
if pqStatus(result) != CONNECTION_OK: dbError(result) # result = nil
|
||||||
|
|
||||||
|
proc setEncoding*(connection: TDbConn, encoding: string): bool {.
|
||||||
|
tags: [FDb].} =
|
||||||
|
## sets the encoding of a database connection, returns true for
|
||||||
|
## success, false for failure.
|
||||||
|
return pqsetClientEncoding(connection, encoding) == 0
|
||||||
|
|
@ -192,7 +192,19 @@ proc open*(connection, user, password, database: string): TDbConn {.
|
||||||
result = db
|
result = db
|
||||||
else:
|
else:
|
||||||
dbError(db)
|
dbError(db)
|
||||||
|
|
||||||
|
proc setEncoding*(connection: TDbConn, encoding: string): bool {.
|
||||||
|
tags: [FDb].} =
|
||||||
|
## sets the encoding of a database connection, returns true for
|
||||||
|
## success, false for failure.
|
||||||
|
##
|
||||||
|
## Note that the encoding cannot be changed once it's been set.
|
||||||
|
## According to SQLite3 documentation, any attempt to change
|
||||||
|
## the encoding after the database is created will be silently
|
||||||
|
## ignored.
|
||||||
|
exec(connection, sql"PRAGMA encoding = ?", [encoding])
|
||||||
|
result = connection.getValue(sql"PRAGMA encoding") == encoding
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
var db = open("db.sql", "", "", "")
|
var db = open("db.sql", "", "", "")
|
||||||
exec(db, sql"create table tbl1(one varchar(10), two smallint)", [])
|
exec(db, sql"create table tbl1(one varchar(10), two smallint)", [])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue