以前在Google Apps腳本的腳本中,我打開並關閉了所有函數中的Jdbc連接。如何在谷歌應用程序腳本中建立連接?
爲了加快我的應用程序,將連接保持打開並在另一個函數中使用它似乎更好。但是,我不知道如何在Google Apps腳本中這樣做。
任何人都可以給我一個建議或例子嗎?
以前在Google Apps腳本的腳本中,我打開並關閉了所有函數中的Jdbc連接。如何在谷歌應用程序腳本中建立連接?
爲了加快我的應用程序,將連接保持打開並在另一個函數中使用它似乎更好。但是,我不知道如何在Google Apps腳本中這樣做。
任何人都可以給我一個建議或例子嗎?
以下是如何在ScriptDB中保留連接的示例。
function myFunction() {
var conn = ScriptDb.getMyDb().query({name : "my_connection"});
var connection = null;
var itemId = null;
if(conn.getSize() == 0) {
Logger.log(" Connection not found, creating new one");
connection = Jdbc.getConnection('jdbc:mysql://<host>:3306/<instance>', 'user', 'password');
itemId = ScriptDb.getMyDb().save({name : "my_connection", connection : connection}).getId();
}else {
Logger.log(" Connection found, retrieving "+conn.getSize());
var dbItem = conn.next();
connection = dbItem.connection;
itemId = dbItem.getId();
}
//Check if it is closed
if(connection.isClosed()) {
connection = Jdbc.getConnection('jdbc:mysql://<host>:3306/<instance>', 'user', 'password');
//After opening remember to save to dabatase again and retain only one connection
ScriptDb.getMyDb().removeById(itemId);
ScriptDb.getMyDb().save({name : "my_connection", connection : connection});
}
//Use your connection here
//Remenber to close it based in some criteria
}
示例here。
非常感謝。我認爲這對我有很大的幫助。我仍然有一個問題:是否將它保留在ScriptDB中是不可避免的? – pjsm
我想這是唯一的方法。谷歌表示,測試連接是否有效的時間與打開一個新連接類似,因此他們建議始終打開一個新連接,但正如你發現的那樣,並不是那樣。如果這個答案幫助你,請豎起大拇指! :) –
嗨, 今天我工作的聯合事項。實際上,這是一個非常好的和創造性的連接池方式。但問題是,scriptDb無法保存Jdbc連接。它說:價值不是一個數字,字符串,布爾等。這是一個不可避免的問題,或者你有這方面的一些建議? 我發現在prepareStatement方法中有一個'setPooled(boolean)'方法。不知何故,這不是一個可能的解決方案嗎?其實,我有點卡住這個。 – pjsm
謝謝!這對我非常有幫助。 – pjsm
對不起,您需要將其保留在ScriptDB中。 CacheService只保留字符串值。 –
我建立了解決方案波紋管。 –