错误:“您的SQL语法有错误;在第1行的'''附近

时间:2019-05-04 00:10:28

标签: javascript mysql jdbc google-apps-script google-sheets

我的JavaScript代码有问题,它说错误是:

  

您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取在第1行“''附近使用的正确语法

我正在尝试调用此查询:“ SELECT * FROM wp_fsqm_direct_52”

当我这样调用查询时,它可以很好地连接到数据库并在工作表中显示数据库数据:var sql = 'SELECT * FROM wp_fsqm_direct_52';

但是,当我从工作表var sql = sheetData.getRange("A1").getValue();的A1单元格中的某个单元格调用完全相同的查询时,它将返回错误。

对不起,我的英语不好,我来自委内瑞拉,这是我第一次来这里。

这是我的代码:

function readFromTable() {
  var ss = SpreadsheetApp.getActive();
  var sheetDetails = ss.getSheetByName('Details');
  var sheetData = ss.getSheetByName('Query Sheet');
  var host = sheetDetails.getRange("B1").getValue();
  var databaseName = sheetDetails.getRange("B2").getValue();
  var userName = sheetDetails.getRange("B3").getValue();
  var password = sheetDetails.getRange("B4").getValue();
  var tableName = sheetDetails.getRange("B6").getValue();
  var url = 'jdbc:google:mysql://' + host + '/' + databaseName;
  Logger.log(url);
  Logger.log(userName);
  Logger.log(password);
  var sql = sheetData.getRange("A1").getValue();

  try {
    var connection = Jdbc.getCloudSqlConnection(url, userName, password);
    var results = connection.createStatement().executeQuery(sql);
    var metaData = results.getMetaData();
    var columns = metaData.getColumnCount();

    // Retrieve metaData to a 2D array
    var values = [];
    var value = [];
    var element = '';
    // Get table headers
    for (i = 1; i <= columns; i++) {
      element = metaData.getColumnLabel(i);
      value.push(element);
    }
    values.push(value);

    // Get table data row by row
    while (results.next()) {
      value = [];
      for (i = 1; i <= columns; i++) {
        element = results.getString(i);
        value.push(element);
      }
      values.push(value);
    }

    // Cloese connection
    results.close();

    // Write data to sheet Data
    SpreadsheetApp.flush();
    sheetData.getRange(2, 1, values.length, value.length).setValues(values);
    SpreadsheetApp.getActive().toast('Data has been updated.');
  } catch (err) {
    SpreadsheetApp.getActive().toast(err.message);
  }
}

2 个答案:

答案 0 :(得分:0)

A1应该是不带引号的纯文本。您似乎在A1中添加了额外的引号'

SELECT * FROM wp_fsqm_direct_52

答案 1 :(得分:0)

我发现,在我喜欢的网站数据库上运行SQL时,对字段名使用反引号,对我提供的字符串使用单引号。因此,这是我刚刚尝试的示例。

不幸的是,反引号很难显示,因此在这里,因为它们调用了代码窗口,所以这里有一张图像显示了我的意思。

enter image description here