public interface ColumnInfo {
prop displaySize: Int64
prop length: Int64
prop name: String
prop nullable: Bool
prop scale: Int64
prop typeName: String
} 功能:执行 Select/Query 语句返回结果的列信息。
prop displaySize: Int64
功能:获取列值的最大显示长度,如果无限制,则应该返回 Int64.Max (仍然受数据库的限制)。
类型:Int64
prop length: Int64
功能:获取列值大小。
类型:Int64
prop typeName: String
功能:获取列类型名称,如果在仓颉中有对应数据类型的定义,返回对应类型的 toString 函数的返回值;如果在仓颉中无对应数据类型的定义,由数据库驱动定义。
类型:String
public interface Connection <: Resource {
prop state: ConnectionState
func createTransaction(): Transaction
func getMetaData(): Map<String, String>
func prepareStatement(sql: String): Statement
} 功能:数据库连接接口。
继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
func createTransaction(): Transaction
功能:创建事务对象。
返回值:
异常:
func prepareStatement(sql: String): Statement
功能:通过传入的 sql 语句,返回一个预执行的 Statement 对象实例。
参数:
返回值:
异常:
public interface Datasource <: Resource {
func connect(): Connection
func setOption(key: String, value: String): Unit
} 功能:数据源接口。
继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
public interface Driver {
prop name: String
prop preferredPooling: Bool
prop version: String
func open(connectionString: String, opts: Array<(String, String)>): Datasource
} 功能:数据库驱动接口。
继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
prop preferredPooling: Bool
功能:指示驱动程序是否与连接池亲和。
如果否,则不建议使用连接池。比如 sqlite 驱动连接池化的收益不明显,不建议使用连接池。
类型:Bool
func open(connectionString: String, opts: Array<(String, String)>): Datasource
功能:通过 connectionString 和选项打开数据源。
参数:
返回值:
public interface QueryResult <: Resource {
prop columnInfos: Array<ColumnInfo>
func next(values: Array<SqlDbType>): Bool
} 功能:执行 Select 语句产生的结果接口。
继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
prop columnInfos: Array<ColumnInfo>
功能:返回结果集的列信息,比如列名,列类型,列长度,是否允许数据库 Null 值等。
类型:Array<ColumnInfo>
func next(values: Array<SqlDbType>): Bool
功能:向后移动一行,必须先调用一次 next 才能移动到第一行,第二次调用移动到第二行,依此类推。当返回 true 时,驱动会在 values 中填入行数据;当返回 false 时结束,且不会修改 values 的内容。
参数:
返回值:
public interface SqlDbType {
prop name: String
} 功能:所有 sql 数据类型的父类。
要扩展用户定义的类型,请继承 SqlDbType 或 SqlNullableDbType。
SqlDbType 接口所有实现类型都必须具有公共 value 属性。每种 sql 数据类型实现类,同时满足以下条件:
public interface SqlNullableDbType <: SqlDbType
功能:允许 null 值的 sql 数据类型父类。
如果为 null 值,value 属性值为 Option.None。
public interface Statement <: Resource {
prop parameterColumnInfos: Array<ColumnInfo>
func query(params: Array<SqlDbType>): QueryResult
func setOption(key: String, value: String): Unit
func update(params: Array<SqlDbType>): UpdateResult
} 功能:sql 语句预执行接口。
Statement 绑定了一个 Connection ,继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
prop parameterColumnInfos: Array<ColumnInfo>
功能:预执行 sql 语句中,占位参数的列信息,比如列名,列类型,列长度,是否允许数据库 Null 值等。
类型:Array<ColumnInfo>
func query(params: Array<SqlDbType>): QueryResult
功能:执行 sql 语句,得到查询结果。
参数:
返回值:
异常:
func setOption(key: String, value: String): Unit
功能:设置预执行 sql 语句选项。
参数:
func update(params: Array<SqlDbType>): UpdateResult
功能:执行 sql 语句,得到更新结果。
参数:
返回值:
异常:
public interface Transaction {
mut prop accessMode: TransactionAccessMode
mut prop deferrableMode: TransactionDeferrableMode
mut prop isoLevel: TransactionIsoLevel
func begin(): Unit
func commit(): Unit
func release(savePointName: String): Unit
func rollback(): Unit
func rollback(savePointName: String): Unit
func save(savePointName: String): Unit
} 功能:定义数据库事务的核心行为。
继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
func begin(): Unit
功能:开始数据库事务。
异常:
func commit(): Unit
功能:提交数据库事务。
异常:
func release(savePointName: String): Unit
功能:销毁先前在当前事务中定义的保存点。这允许系统在事务结束之前回收一些资源。
参数:
异常:
func rollback(): Unit
功能:从挂起状态回滚事务。
异常:
func rollback(savePointName: String): Unit
功能:回滚事务至指定保存点名称。
参数:
异常:
func save(savePointName: String): Unit
功能:在事务中创建一个指定名称的保存点,可用于回滚此保存点之后的事务。
参数:
异常:
public interface UpdateResult {
prop lastInsertId: Int64
prop rowCount: Int64
} 功能:执行 Insert、Update、Delete 语句产生的结果接口。
继承该接口的 class、interface、struct 也需要遵守该接口中函数的入参及返回值定义。
prop lastInsertId: Int64
功能:执行 Insert 语句自动生成的最后 row ID ,如果不支持则 row ID 为 0。
类型:Int64