Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL语句,仅当值大于当前值时才更新字段_Java_Sql_Sqlite_Jdbc_Sql Update - Fatal编程技术网

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”相同查询缺少
前面的
点<?
。这就是语法错误的原因。