java mysql 数组_Java程序实现将数组元素存储到mysql数据库表中

目的是将数组元素一个个存储到数据库表中的字段中,主要是解决:我在将数据库中的字段复杂计算后,需要把结果写进数据库的问题。

首先,我的数组元素个数等于表中的记录数(不等也没关系),添加空字段,数据类型为数组类型。

1、表中有ID标识,没有的可根据上篇文章(表中添加字段字段值为行编号)进行添加;

2、写Java连接mysql数据库类

Connect.java

package GPS_Data;

import java.sql.*;

import org.omg.CORBA.PUBLIC_MEMBER;

public class Connect {

public static final String url="jdbc:mysql://localhost:3306/lunwen";

public static final String name="com.mysql.jdbc.Driver";

public static final String user="root";

public static final String password="1234";

public Connection conn=null;

public PreparedStatement pst1=null;

public Connect(String sql){

try{

Class.forName(name);

conn=DriverManager.getConnection(url,user,password);

pst1=conn.prepareStatement(sql);

}catch(Exception e){

e.printStackTrace();

}

}

public void close(){

try{

this.conn.close();

this.pst1.close();

}catch (SQLException e){

e.printStackTrace();

}

}

}

3、主函数调用进行计算和存储

main.java

package GPS_Data;

import java.sql.*;

import java.util.ArrayList;

import GPS_Data.Connect;

public class Preprocess_Model {

static String sql1=null;

static String sql2=null;

static Connect mysql1=null;

static Connect mysql2=null;

static ResultSet ret1=null;

Statement stmt=null;

public static void main(String[] args) {

sql1="select * from table";

mysql1= new Connect(sql1);

ArrayListdata=new ArrayList();//初始化动态数组

try{

ret1=mysql1.pst1.executeQuery();

double Longitude=0;

double Latitude=0;

double LO1=117.20453* Math.PI / 180.0;

double LA1=39.226417* Math.PI / 180.0;

int i=0;

while (ret1.next()){

String lie3 = ret1.getString(3);

String lie4 = ret1.getString(4);

Longitude=Double.parseDouble(lie3);

Latitude=Double.parseDouble(lie4);

double R=6378137;

double LO2=Longitude* Math.PI / 180.0;

double LA2=Latitude* Math.PI / 180.0;

double b=LO1-LO2;

double a=LA1-LA2;

double sa2, sb2;

sa2 = Math.sin(a / 2.0);

sb2 = Math.sin(b / 2.0);

double d = 2 * R

* Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(LA1)

* Math.cos(LA2) * sb2 * sb2));

data.add(d);//将计算结果添加到数组中

LO1=LO2;

LA1=LA2;

}

ret1.close();

}catch(SQLException e){

e.printStackTrace();

}

try{

sql2="update table set Distance="+"?"+"where ID="+"?";//格式修改

mysql2= new Connect(sql2);

int j=0;

for(int i=1;i<=data.size();i++){

mysql2.pst1.setDouble(1,data.get(j));

mysql2.pst1.setInt(2,i);

System.out.println(data.get(j));

int ret2=mysql2.pst1.executeUpdate();

System.out.println(ret2);

j++;

}

}catch(SQLException e){

e.printStackTrace();

}

}

}

注:以上程序已实现,如有疑问可在评论中提出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值