Javaプログラム実装配列要素をmysqlデータベーステーブルに格納
3653 ワード
目的は、配列要素をデータベース・テーブルのフィールドに1つずつ格納することです.主に、データベースのフィールドを複雑に計算した後、結果をデータベースに書き込む必要があるという問題を解決します.
まず、私の配列要素の個数はテーブルのレコード数に等しく(等しくなくても大丈夫)、空のフィールドを追加し、データ型は配列タイプです.
1、表にID ID ID IDがあり、ない場合は前編の文章(表に追加されたフィールドの値は行番号)に基づいて追加することができる.
2、Java接続mysqlデータベースクラスを書く
Connect.java
3、主関数呼び出しによる計算と記憶
main.java
注:以上のプログラムは実装されており、疑問があればコメントで提出できます.
まず、私の配列要素の個数はテーブルのレコード数に等しく(等しくなくても大丈夫)、空のフィールドを追加し、データ型は配列タイプです.
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();
}
}
}
注:以上のプログラムは実装されており、疑問があればコメントで提出できます.