gpt4 book ai didi

Java - 从字符串中删除不可打印的字符

转载 作者:行者123 更新时间:2023-12-01 15:16:37 26 4
gpt4 key购买 nike

我试图将一个字符串传递到一个包含换行符的 SQL 语句中,所以它抛出了一个错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 'WHERE nric = 'S3456789A\n'' 附近使用的正确语法

所以我通过执行

删除了换行符

nric = nric.replace("\n","");

然后它向我抛出了错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 'WHERE nric = 'S3456789A'' 附近使用的正确语法

事情是,当我执行 System.out.println 时,撇号没有显示,它只是 S3456789A 而不是 S3456789A'。如何删除撇号?

代码:

从 android 获取数据并发布:

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("nric",nric));
response = CustomHttpClient.executeHttpPost("http://172.27.176.181:8080/SRD/SaveLocation", postParameters);

servlet SaveLocation 的必要部分:

String nric = request.getParameter("nric");
nric = nric.replace("\n", "");
User elder = new User();
elder.setNric(nric);
try {
if(elder.retrieveUserWithNric())
{

从 User 实体类中检索UserWithNric:

public boolean retrieveUserWithNric() throws SQLException
{
boolean success = false;
ResultSet rs = null;
try {
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/srd");
} catch (NamingException e) {
System.out.println("User: Naming Exception");
e.printStackTrace();
}
Connection conn = ds.getConnection();

PreparedStatement pstmt = null;
String dbQuery = "SELECT * FROM User WHERE nric = ?";
System.out.println("retrieveUserwithNric nric is "+nric);
try {
pstmt = conn.prepareStatement(dbQuery);
pstmt.setString(1, nric);
rs = pstmt.executeQuery();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
if (rs.next()) {
id = rs.getInt("id");
nric = rs.getString("nric");
password = rs.getString("password");
salt = rs.getString("salt");
name = rs.getString("name");
mobileNo = rs.getInt("mobile_no");
address = rs.getString("address");
postal = rs.getInt("postal_code");
relativeElderly = rs.getString("relative_elderly");
role = rs.getString("role");
organization = rs.getString("organization");
elderlyList = rs.getString("elderly_list");
// image = rs.getBlob("image");
success = true;
}
else
{
System.out.println("rs does not have next");
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("name is "+name);
System.out.println("role is "+role);
conn.close();
return success;
}

最佳答案

撇号不存在。错误消息用撇号括起来,删除它们您会得到:

WHERE nric = 'S3456789A'

其他原因导致此错误。

关于Java - 从字符串中删除不可打印的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com