Java SQL语句,仅当值大于当前值时才更新字段
到目前为止,我有以下声明:Java SQL语句,仅当值大于当前值时才更新字段,java,sql,sqlite,jdbc,sql-update,Java,Sql,Sqlite,Jdbc,Sql Update,到目前为止,我有以下声明: String query=“UPDATE Score SET Points=“+scorecard[TOTAL][i]+”其中Name=“+players[i].getName()+”和Lastname=“+players[i].getLastName()”; 你知道我该怎么做吗?我看到了一些地方可以在语法时使用大小写,但无法让它工作。你会想要的 update score set points = ? where name = ? and lastname
String query=“UPDATE Score SET Points=“+scorecard[TOTAL][i]+”其中Name=“+players[i].getName()+”和Lastname=“+players[i].getLastName()”;
你知道我该怎么做吗?我看到了一些地方可以在语法时使用大小写,但无法让它工作。你会想要的
update score set points = ? where
name = ? and lastname = ?
and points < ?
更新分数设置点=?其中
name=?和lastname=?
和点<?
作为SQL。请使用PreparedStatement
try(PreparedStatement ps = con.prepareStatement("update score set " +
" points = ? where name = ? and lastname = ? and points < ?") {
ps.setInt(1, scorecard[TOTAL][i]);
ps.setString(2, players[i].getName());
ps.setString(3, players[i].getLastName());
ps.setInt(4, scorecard[TOTAL][i]);
ps.executeUpdate();
}
try(PreparedStatement ps=con.preparest陈述(“更新分数集”+
“点=?其中名称=?和姓氏=?和点<?”){
ps.setInt(1,记分卡[总数][i]);
ps.setString(2,players[i].getName());
ps.setString(3,players[i].getLastName());
ps.setInt(4,记分卡[总数][i]);
ps.executeUpdate();
}
更新分数集…
不插入分数集…
是的,很抱歉修复了此问题。我复制了一段未完成的代码。请不要将值连接到查询字符串中,而是使用带有占位符的预处理语句。您当前的代码对sql注入开放,可能导致难以诊断的问题。我收到了一份错误,这是我之前得到的:java.sql.SQLException:[SQLITE_error]sql错误或缺少数据库(靠近“Points”:语法错误)
共享表定义?创建表“Score”(“Name”CHAR NOT NULL,“Lastname”CHAR NOT NULL,“Age”INTEGER,“Points”INTEGER默认值0,主键(“Name”,“Lastname”))
。感谢您花时间提供帮助!然后尝试使用“Points”作为列名(两次)-“Lastname”和“name”相同查询缺少和前面的和点<?
。这就是语法错误的原因。