java - 在插入数据库之前尝试将 Arraylist<LatLng> 转换为字符串

标签 java jdbc arraylist foreach tostring

我尝试插入我的 ArrayList<LatLng> list1有很多这样的值:(99.9999999,99.9999999)到数据库 MySQL 中的表,精确到 1 列,如下所示:

row 1 (99.9999999,99.9999999)  
row 2 (99.9999999,99.9999999)  
row 3 (99.9999999,99.9999999)

...全部到 1 列。

在我看来,目前我有一个很好的方法:

String sql = "INSERT INTO table1 VALUES(";
for(String s : list1) {
    sql = sql+"'"+s+"'"; 
}    
sql = sql+")";
stmt.executeUpdate(sql);

但 Android Studio 强调 String s并说:

Incompatible types
Required: com.google.android.gms.maps.model.LatLng
Found: java.lang.String

在我看来,Android Studio 试图告诉我:你需要转换 ArrayList<LatLng> list1 中的所有值。至String !
是否可以转换我的 ArrayList 中的所有值用一种方法?

最佳答案

不好的做法:

您可以通过以下方式将数据转换为字符串:

for(LatLng s : list1)
{
    String sql = "INSERT INTO table1 VALUES('"+s+"');
    stmt.executeUpdate(sql);
}

也就是说,您无需执行任何特定操作即可对其进行转换。我假设您在 LatLng 类中实现了 toString() 方法,以便为 LatLng 类型的对象提供有意义的字符串表示形式。

这样做的好方法:

String sql = "INSERT INTO table1 VALUES(?)";
PreparedStatement stmt = dbConnection.prepareStatement(sql);
for(LatLng s : list1){
    stmt.setString(1, s); // insert 's' in place of the 1st '?'
    stmt.addBatch();
}
stmt.executeBatch();

在最后一种情况下,您正在准备一批命令立即发送到数据库。这比发送许多 sql 语句要好得多,因为最终的开销要少得多。另外,您不是自己连接 sql 语句。您给初始 sql 语句加上“?”占位符,然后使用“setString()”或“setInt()”或任何您想要插入的类型插入值。

关于java - 在插入数据库之前尝试将 Arraylist<LatLng> 转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442503/

相关文章:

java - ClassNotFoundException : org. hibernate.ejb.HibernatePersistence 使用 maven 部署

java - java中不同类中通过静态方法设置和获取静态变量值

java:将 HashMap<String, String> 存储在 ArrayList<Object> 中

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - RabbitMQ 示例代码未在 Java 中编译

java - jdbc中如何通过id进行搜索

Java读写本地数据库?

java - Tomcat 数据源配置连接超时和最大 Activity 与空闲连接比率

java - 如何找到 ArrayList<Integer> 中最大值的索引?

java - 如何按 id 对 ArrayList 进行排序并添加到 ArrayList<ArrayList<DataPost>>