Доступ к данным, возвращаемым SQL-запросом выбора в Ballerina
Я очень новичок в балерине. В моем проекте я хочу получить доступ к данным, которые возвращаются запросом выбора SQL?
что я пытаюсь сделать, это
public function calculateCholesterol(int age,string gender,int totalCholesterol,int non_hd,int ldl,int hdl){
json data;
string sqlQuery;
sqlQuery = "SELECT * FROM CHOLESTEROL WHERE gender = ? AND age = ?";
var result = cholesterolDB->select(sqlQuery,(),gender,selectedAge);
table<Cholesterol> cholTable = table{};
match result {
table dataTable =>{
//io:println(check <json>dataTable);
var res = cholTable.add(dataTable);
io:println(res);
}
error err =>{
data = {"Status":"Data Not Found","Error":err.message};
}
}
}
Но это не работает и выдает ошибку во время выполнения.
2 ответа
match result {
table dataTable => {
data = check <json>dataTable;
correctData[0] = check <int>data[0].totalCholesterol;
correctData[1] = check <int>data[0].non_hd;
correctData[2] = check <int>data[0].hdl;
correctData[3] = check <int>data[0].ldl;
}
error err => {
data = {"Status":"Data Not Found","Error":err.message};
}
}
Вы также можете сделать следующее.
table<Cholesterol> cholTable;
match result {
table dataTable => cholTable = dataTable;
error err => // handle error
}
// Now you can perform any required operation on the cholTable.
// eg: You can iterate it, convert to JSON/XML.
foreach row in cholTable {
io:println("Info:" + row.totalCholesterol);
}
Обратите внимание, что вы не можете повторить таблицу, возвращенную из операции SQL, если вы не установите loadToMemory
параметр в select
операция. Если вы сделаете следующее, то можете выполнить итерацию более одного раза.
например:
var selectRet = testDB->select("SELECT * FROM student", Student, loadToMemory = true);
Пожалуйста, обратитесь к примеру клиента jdbc для получения дополнительной информации.