我使用带有AnyLogic的外部数据库来检查数据库中是否存在数据。如果没有,那么我需要插入并执行另一个操作。然而,我得到了这个错误
jdbc。SQLServerException:索引1超出范围。
这是我的代码。
try {
Connection con = vanet.getConnection();
java.sql.Statement stmt=null;
java.sql.ResultSet rs=null;
String preQueryStatement
= "SELECT * FROM vanet WHERE vehicle = " + vehicle.getIndex() + ";";
PreparedStatement pStmnt = con.prepareStatement(preQueryStatement);
pStmnt.setInt(1, vehicle.getIndex());
rs = pStmnt.executeQuery();
if (!rs.next())
{
String insertStatement
= "INSERT INTO vanet VALUES (vehicle, surrounded)";
PreparedStatement ps = con.prepareStatement(insertStatement);
ps.setInt(1, vehicle.getIndex());
ps.setInt(2, v.getIndex());
System.out.println("new user inserted");
}
}catch(SQLException e){
e.printStackTrace();
}
下面是完整的错误消息
The index 1 is out of range.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:226)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:1110)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue(SQLServerPreparedStatement.java:1124)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setInt(SQLServerPreparedStatement.java:1406)
at v2v_simple.TaskAssignment.enterState(TaskAssignment.java:425)
at v2v_simple.TaskAssignment.executeActionOf(TaskAssignment.java:651)
at com.anylogic.engine.TransitionMessage.execute(Unknown Source)
要能够使用以下内容:
pStmnt.setInt(1, vehicle.getIndex());
查询中需要有占位符(?
符号)。应该是这样的:
String preQueryStatement = "SELECT * FROM vanet WHERE vehicle = ? ";
第二个语句也是如此,但我认为您可以从这里处理:)
旁注:一般来说,您不应该串联SQL语句,而应该始终使用占位符。这可能会导致应用程序中存在安全漏洞。
使用此,
String preQueryStatement
= "SELECT * FROM vanet WHERE vehicle = ? ";
PreparedStatement pStmnt = con.prepareStatement(preQueryStatement);
pStmnt.setInt(1, vehicle.getIndex());
例:“at”和“tack”应该返回true,“tree”和“ere”应该返回false。 在查看注释后编辑,我的新代码现在是这样的。它总是返回false,即使带有“tree”和“tree”。
在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)在com.microsoft.sqlserver.jdbc.SQLServerPrearedStatement.setterGetParam(SQLServerPrearedStatement.java:9
我已经使用创建了“CfnUserPool”对象https://docs.aws.amazon.com/cdk/api/latest/python/aws_cdk.aws_cognito/CfnUserPool.html aws文件。 我想获取UserPool的“Pool Id”。其Id值为“us-east-1_4kxxxxxx”。我使用python尝试了很多选项来获取这个值,但都没有成功。 所以我
错误 ()1中的索引器错误回溯(最近一次调用)---- ~/Documents/PhD/IntelliSys19/journal/ColdStart_实验/相似性_函数。用户中u2的装饰矩阵中的py()145:146评级1=np。nan_to_num(np.array(user_ratings_matrix.iloc[u1-1].values))-- ~/anaconda3/lib/python3
我试着运行这个: 但是得到这个错误: 回溯(最后一次调用): 文件“C:\Users\Shakh\Desktop\Hello3.py”,第4行,在 打印(“Hallo”,sys.argv[1]) 索引器:列表索引超出范围
我的jsp页面有问题。我正在使用:- -Tomcat 8.0.20 -Eclipse Java EE luna SR2 -Microsoft SQL server 2005 -使用管理工作室Express做我的数据库工作 这是一个小问题,因为我正在学习在jsp页面上运行查询。我偶然发现了这个问题,想知道是否有人可以帮助我。 这是我的代码片段 这就是错误所在 org.apache.jasper。Ja