Javaプログラム実装配列要素をmysqlデータベーステーブルに格納

3653 ワード

目的は、配列要素をデータベース・テーブルのフィールドに1つずつ格納することです.主に、データベースのフィールドを複雑に計算した後、結果をデータベースに書き込む必要があるという問題を解決します.
まず、私の配列要素の個数はテーブルのレコード数に等しく(等しくなくても大丈夫)、空のフィールドを追加し、データ型は配列タイプです.
1、表にID ID ID 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);
        
        ArrayList data=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();
        } 
        
       
	}

}

注:以上のプログラムは実装されており、疑問があればコメントで提出できます.