无法插入某些字符 Hana 数据库
Cannot insert certain characters Hana Database
我正在 SAP HANA Studio 中制作 Hana 应用程序。我能够将条目插入到我创建的 hdbtable 中,当它们是“1”和 "apple" 等正常值时。当我出于某种原因尝试添加“+”或“%”等值时,它们在我的数据预览中显示为 space。为什么不存储它们?我该如何解决这个问题以便我可以添加这些字符?更改 NVARCHAR 和 VARCHAR 不起作用。
以下是我 table 的架构。
table.schemaName = "scheming";
table.tableType = COLUMNSTORE;
table.description = "test table";
table.columns = [
{name = "id"; sqlType = NVARCHAR; nullable = false; length = 10; comment = "id"; },
{name = "desc"; sqlType = VARCHAR; nullable = false; length = 10; comment = "desc";}
];
table.primaryKey.pkcolumns = ["id"];
这是我的 xsjs 文件:
$.response.contentType = "text/html";
var id = $.request.parameters.get('id');
var desc = $.request.parameters.get('desc');
$.trace.debug("Here is my log.");
try {
var conn = $.db.getConnection();
var st = conn.prepareStatement("INSERT INTO \"scheming\".\"blah.blah::test_table\" values(?,?)");
st.setString(1, id);
st.setString(2, desc);
st.execute();
st.close();
conn.commit();
conn.close();
$.response.setBody('X');
} catch (err) {
$.response.setBody(err);
// $.response.status = $.net.http.INTERNAL_SERVER_ERROR
}
控制器文件
jQuery(document).ready(
function() {
jQuery.get("/com/colpal/training/test1/Insert.xsjs?id=" + id +"&desc=" + desc,
function(result) {
if (result == 'X'){
console.log("Inserted");
}else if(result == 'Y'){
console.log("Fail");
}
});
});
你的控制器的截图显示你在 URL 中传递了没有编码的 id 和 desc。这不适用于在 URL 中具有特殊含义的字符,例如 + 和 %。您可以在 RFC 3986.
中找到有关 URL 编码和保留字符的详细信息
在构造URL时使用JavaScript的encodeURIComponent对单个数据进行编码:
jQuery.get("/com/colpal/training/test1/Insert.xsjs?id=" +
encodeURIComponent(id) + "&desc=" + encodeURIComponent(desc), ...
我正在 SAP HANA Studio 中制作 Hana 应用程序。我能够将条目插入到我创建的 hdbtable 中,当它们是“1”和 "apple" 等正常值时。当我出于某种原因尝试添加“+”或“%”等值时,它们在我的数据预览中显示为 space。为什么不存储它们?我该如何解决这个问题以便我可以添加这些字符?更改 NVARCHAR 和 VARCHAR 不起作用。
以下是我 table 的架构。
table.schemaName = "scheming";
table.tableType = COLUMNSTORE;
table.description = "test table";
table.columns = [
{name = "id"; sqlType = NVARCHAR; nullable = false; length = 10; comment = "id"; },
{name = "desc"; sqlType = VARCHAR; nullable = false; length = 10; comment = "desc";}
];
table.primaryKey.pkcolumns = ["id"];
这是我的 xsjs 文件:
$.response.contentType = "text/html";
var id = $.request.parameters.get('id');
var desc = $.request.parameters.get('desc');
$.trace.debug("Here is my log.");
try {
var conn = $.db.getConnection();
var st = conn.prepareStatement("INSERT INTO \"scheming\".\"blah.blah::test_table\" values(?,?)");
st.setString(1, id);
st.setString(2, desc);
st.execute();
st.close();
conn.commit();
conn.close();
$.response.setBody('X');
} catch (err) {
$.response.setBody(err);
// $.response.status = $.net.http.INTERNAL_SERVER_ERROR
}
控制器文件
jQuery(document).ready(
function() {
jQuery.get("/com/colpal/training/test1/Insert.xsjs?id=" + id +"&desc=" + desc,
function(result) {
if (result == 'X'){
console.log("Inserted");
}else if(result == 'Y'){
console.log("Fail");
}
});
});
你的控制器的截图显示你在 URL 中传递了没有编码的 id 和 desc。这不适用于在 URL 中具有特殊含义的字符,例如 + 和 %。您可以在 RFC 3986.
中找到有关 URL 编码和保留字符的详细信息在构造URL时使用JavaScript的encodeURIComponent对单个数据进行编码:
jQuery.get("/com/colpal/training/test1/Insert.xsjs?id=" +
encodeURIComponent(id) + "&desc=" + encodeURIComponent(desc), ...