我的查询
attributes.replace(" ' ", "");
//also used SET "+attributes+"
String sql;
sql = "UPDATE diseaseinfo"
+ " SET ?=?"
+ "WHERE companyname = 'mycom' && diseaseName =?";
PreparedStatement preparedStmt = connects.prepareStatement(sql);
preparedStmt.setString(1, attributes);
preparedStmt.setString(2, attrData);
preparedStmt.setString(3, medname);
System.out.println(preparedStmt);
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误,因为查询在字符串中设置了列名,所以它在原因上变成这样
UPDATE diseaseinfo SET 'causes'='abc' WHERE companyname = 'mycom' and diseaseName ='fever'
Run Code Online (Sandbox Code Playgroud)
通过这个问题我知道我不能通过准备好的语句添加动态列:https : //stackoverflow.com/a/3136049/7794329
现在,真正的问题出现了:假设我是否会使用一个简单的更新查询,比如这个问题:jdbc dymanic sql query with variable containsg 's
它说你不能在你的简单 sql 查询中输入带有 's 的值,因为它会再次使查询语法错误,例如:
SELECT * FROM diseaseinfo WHERE diseaseName = 'Adult Still's disease' AND name …Run Code Online (Sandbox Code Playgroud) 我在做什么
例如我有一个名字
var nameofuser = 'John Constantine vayo';
var values = nameofuser.split(" ");
var f_name = values[0];
var l_name = nameofuser.substr(nameofuser.indexOf(' ') + 1);
console.log(f_name);
console.log(l_name);Run Code Online (Sandbox Code Playgroud)
当用户输入他的姓氏和其他头衔等时,它工作正常,这一切都在 l_name 中,但是当用户仅输入名字(例如“John”)时,l_name 也会填充“john”:(,
我希望如果用户输入姓氏等,则只应填充 l_name 。
如果用户仅输入名字,则仅应填充带有名字的 f_name