0

有人可以帮我弄清楚如何获取文本框的值以写入 MS SQL 数据库吗?我的数据库连接工作正常,现在我只需要确定如何获取文本框的值并使用 Google Apps 脚本将其写入数据库。

现在下面的代码只会将单词 TEXT 插入数据库,而不是文本框的值。

function doGet() {
  var app = UiApp.createApplication();

  var panel = app.createAbsolutePanel();
  var label = app.createLabel('Test Textbox');
  var text = app.createTextBox();
  var submit = app.createButton('Submit');

  panel.add(label);
  panel.add(text);
  panel.add(submit);

  app.add(panel);

  // Handlers
  var handler = app.createServerClickHandler('write');
  handler.addCallbackElement(panel);
  submit.addClickHandler(handler);

  return app;
} 

// submit text to database
function write(e) {
  var app = UiApp.getActiveApplication();
  var text = e.parameter.text;

  var conn = Jdbc.getConnection("jdbc:sqlserver://IPAddress:1433;" +
   "databaseName=name;userusername;password=password;");

  var stmt = conn.createStatement();
  var sql = "INSERT INTO dbo.tbl_Student (studentFName) VALUES ('text')";
  var count = stmt.executeUpdate(sql,1)//pass in any integer to get auto incremented IDs back

  // check to see any auto generated keys come back. that is optional. 
  var rs = stmt.getGeneratedKeys();
  while(rs.next()) {
    Logger.log(rs.getString(1));
  }

  rs.close();
  stmt.close();
  conn.close();    

  return app.close();
}
4

2 回答 2

1

为了获取传入的文本框的值,您需要为文本框创建一个名称:

修改var text = app.createTextBox();var text = app.createTextBox().setName('mytb');.

然后,在您的处理程序函数中,您可以通过var text = e.parameter.mytb;.

另外,我认为您只是在数据库中插入文字“文本”。相反,尝试使用 text 变量创建字符串,如下所示:

var sql = "INSERT INTO dbo.tbl_Student (studentFName) VALUES ("+text+")";

于 2013-02-06T21:59:51.563 回答
0

有效的代码:

function doGet() {
  var app = UiApp.createApplication();

  var panel = app.createAbsolutePanel();
  var label = app.createLabel('Test Textbox');
  var text = app.createTextBox().setName('mytb').setId('mytb');
  var submit = app.createButton('Submit');

  panel.add(label);
  panel.add(text);
  panel.add(submit);

  app.add(panel);

  // Handlers
  var handler = app.createServerClickHandler('write');
  handler.addCallbackElement(text);
  submit.addClickHandler(handler);

  return app;
}  

// submit text to database
function write(e) {
  var app = UiApp.getActiveApplication();
  var textbox = app.getElementById('mytb');
  var text = e.parameter.mytb;

  var conn = Jdbc.getConnection("jdbc:sqlserver://IPAddress;" +
   "databaseName=database;user=user;password=password;");

  var stmt = conn.createStatement();
  var sql = "INSERT INTO dbo.tbl_Student (studentFName) VALUES ('"+text+"')";
  var count = stmt.executeUpdate(sql,1)//pass in any integer to get auto incremented IDs back

  // check to see any auto generated keys come back. that is optional. 
  var rs = stmt.getGeneratedKeys();
  while(rs.next()) {
    Logger.log(rs.getString(1));
  }

  rs.close();
  stmt.close();
  conn.close();

  return app.close();
}
于 2013-02-12T18:53:33.390 回答