Linux上でJavaからMySQL接続を実施
1. connectorのダウンロード
まずhttp://dev.mysql.com/downloads/connector/よりConnector/J
をダウンロード、展開する。
その中のmysql-connector-java-5.1.37-bin.jarをサーバにFTP等でアップロード。
2. クラスパスの設定
$ vi .bashrc
export CLASSPATH=/usr/local/lib/mysql-connector-java-5.1.37-bin.jar:/usr/local/lib/lpsolve55j.jar:$CLASSPATH
前回の設定分に赤の部分を追加しておく
$ source .bashrc
3. MySQL接続クラスをつける
class MySQL {
// JDBCドライバの登録
String driver;
// データベースの指定
String server, dbname, url, user, password;
Connection con;
Statement stmt;
ResultSet rs;
public MySQL() {
this.driver = "org.gjt.mm.mysql.Driver";
this.server = "localhost";
this.dbname = "naisyo";
this.url = "jdbc:mysql://" + server + "/" + dbname + "?useUnicode=true&characterEncoding=UTF-8"; this.user = "naisyo";
this.password = "naisyo";
try {
this.con = DriverManager.getConnection(url, user, password);
this.stmt = con.createStatement ();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Class.forName (driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void close(){
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public ResultSet selectAll(){
String sql = "SELECT * FROM naisyo";
ResultSet rs = null;
try {
rs = stmt.executeQuery (sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //try catchで囲む
return rs;
}
}
main関数から呼び出し
MySQL mysql = new MySQL();
ResultSet rs = mysql.selectAll();
try {
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("ID:" + id);
System.out.println("Name:" + name);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
これで表示されれば、データベースとの接続&情報取り出しOK
2015年11月19日木曜日
2015年11月18日水曜日
lp_solveでJavaプログラム実行(配列利用)
lp_solveを利用するときに配列を利用する場合
int constraint[][] = {{-18,-900,370,10},{-74,-230,550,20},{-34,-2090,340,11},{-80,-1410,452,15},{18,900,0,0}};
int object[] = {0,0,370,10};
のように、制約条件と目的関数の係数配列を用意
これをそれぞれ文字列として変数にいれておく
import lpsolve.*;
public class LP {
public static void main(String[] args) {
int constraint[][] = {{-18,-900,370,10},{-74,-230,550,20},{-34,-2090,340,11},{-80,-1410,452,15},{18,900,0,0}};
int object[] = {0,0,370,10};
try {
LpSolve solver = LpSolve.makeLp(constraint.length, object.length);//constraints, variables
solver.setOutputfile("debug");
String stc = "", sto = "";
for(int i = 0;i < constraint.length; i++){
stc = "";
for(int j = 0; j < constraint[i].length; j++){
stc += constraint[i][j];
stc += " ";
}
if(i == constraint.length -1 )
solver.strAddConstraint(stc, LpSolve.EQ,1);
else
solver.strAddConstraint(stc, LpSolve.LE,0);
}
for(int i = 0; i < object.length; i++){
sto += object[i];
sto += " ";
}
solver.setMaxim();
solver.strSetObjFn(sto);
solver.solve();
System.out.println("Value of objective function: " + solver.getObjective());
double var[] = solver.getPtrVariables();
for(int i = 0; i < var.length; i++){
System.out.println("var[" + i + "] = " + var[i]);
}
solver.deleteLp();
}
catch (LpSolveException e) {
e.printStackTrace();
}
}
}
このような形になる。次はDBから値を持ってきて配列にいれて計算を行う。
int constraint[][] = {{-18,-900,370,10},{-74,-230,550,20},{-34,-2090,340,11},{-80,-1410,452,15},{18,900,0,0}};
int object[] = {0,0,370,10};
のように、制約条件と目的関数の係数配列を用意
これをそれぞれ文字列として変数にいれておく
import lpsolve.*;
public class LP {
public static void main(String[] args) {
int constraint[][] = {{-18,-900,370,10},{-74,-230,550,20},{-34,-2090,340,11},{-80,-1410,452,15},{18,900,0,0}};
int object[] = {0,0,370,10};
try {
LpSolve solver = LpSolve.makeLp(constraint.length, object.length);//constraints, variables
solver.setOutputfile("debug");
String stc = "", sto = "";
for(int i = 0;i < constraint.length; i++){
stc = "";
for(int j = 0; j < constraint[i].length; j++){
stc += constraint[i][j];
stc += " ";
}
if(i == constraint.length -1 )
solver.strAddConstraint(stc, LpSolve.EQ,1);
else
solver.strAddConstraint(stc, LpSolve.LE,0);
}
for(int i = 0; i < object.length; i++){
sto += object[i];
sto += " ";
}
solver.setMaxim();
solver.strSetObjFn(sto);
solver.solve();
System.out.println("Value of objective function: " + solver.getObjective());
double var[] = solver.getPtrVariables();
for(int i = 0; i < var.length; i++){
System.out.println("var[" + i + "] = " + var[i]);
}
solver.deleteLp();
}
catch (LpSolveException e) {
e.printStackTrace();
}
}
}
このような形になる。次はDBから値を持ってきて配列にいれて計算を行う。
lp_solveをJavaで実行できるようにする
lp_solveをJavaで実行できるようにする
Javaをインストール
# yum install java
Java用のlp_solveを導入
http://sourceforge.net/projects/lpsolve/files/lpsolve/
から
lp_solve_5.5.2.0_java.zip
lp_solve_5.5.2.0_dev_ux64.tar.gz
をダウンロード。展開後
lp_solve_5.5_java/lib/ux64/liblpsolve55j.so
lp_solve_5.5_java/lib/lpsolve55j.jar
lp_solve_5.5.2.0_dev_ux64/liblpsolve55.so
を/usr/local/libにコピー
# chmod 755 /usr/local/lib/*
ライブラリへの環境変数の設定
ユーザで設定する場合
~]$ vi .bashrc
追加
export CLASSPATH=/usr/local/lib/lpsolve55j.jar:$CLASSPATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
環境変数の適用
~]$ source .bashrc
Javaファイル作成
~]$ vi Demo.java
[Demo.java] サイトより
import lpsolve.*;
public class Demo {
public static void main(String[] args) {
try {
// Create a problem with 4 variables and 0 constraints
LpSolve solver = LpSolve.makeLp(0, 4);
// add constraints
solver.strAddConstraint("3 2 2 1", LpSolve.LE, 4);
solver.strAddConstraint("0 4 3 1", LpSolve.GE, 3);
// set objective function
solver.strSetObjFn("2 3 -2 3");
// solve the problem
solver.solve();
// print solution
System.out.println("Value of objective function: " + solver.getObjective());
double[] var = solver.getPtrVariables();
for (int i = 0; i < var.length; i++) {
System.out.println("Value of var[" + i + "] = " + var[i]);
}
// delete the problem and free memory
solver.deleteLp();
}
catch (LpSolveException e) {
e.printStackTrace();
}
}
}
~]$ javac Demo.java
~]$ java Demo
で実行できる。
参考
http://d.hatena.ne.jp/yambi/20090916/1253111261
Javaをインストール
# yum install java
Java用のlp_solveを導入
http://sourceforge.net/projects/lpsolve/files/lpsolve/
から
lp_solve_5.5.2.0_java.zip
lp_solve_5.5.2.0_dev_ux64.tar.gz
をダウンロード。展開後
lp_solve_5.5_java/lib/ux64/liblpsolve55j.so
lp_solve_5.5_java/lib/lpsolve55j.jar
lp_solve_5.5.2.0_dev_ux64/liblpsolve55.so
を/usr/local/libにコピー
# chmod 755 /usr/local/lib/*
ライブラリへの環境変数の設定
ユーザで設定する場合
~]$ vi .bashrc
追加
export CLASSPATH=/usr/local/lib/lpsolve55j.jar:$CLASSPATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
環境変数の適用
~]$ source .bashrc
Javaファイル作成
~]$ vi Demo.java
[Demo.java] サイトより
import lpsolve.*;
public class Demo {
public static void main(String[] args) {
try {
// Create a problem with 4 variables and 0 constraints
LpSolve solver = LpSolve.makeLp(0, 4);
// add constraints
solver.strAddConstraint("3 2 2 1", LpSolve.LE, 4);
solver.strAddConstraint("0 4 3 1", LpSolve.GE, 3);
// set objective function
solver.strSetObjFn("2 3 -2 3");
// solve the problem
solver.solve();
// print solution
System.out.println("Value of objective function: " + solver.getObjective());
double[] var = solver.getPtrVariables();
for (int i = 0; i < var.length; i++) {
System.out.println("Value of var[" + i + "] = " + var[i]);
}
// delete the problem and free memory
solver.deleteLp();
}
catch (LpSolveException e) {
e.printStackTrace();
}
}
}
~]$ javac Demo.java
~]$ java Demo
で実行できる。
参考
http://d.hatena.ne.jp/yambi/20090916/1253111261
lp_solveの導入
lp_solveの導入
CentOS6.5にlp_solveをいれる方法
# yum install lpsolve
でインストール
ユーザに切り替えて例題作成
$ vi test.lp
max:370c+10d;
-18a-900b+370c+10d<=0;
-74a-230b+550c+20d<=0;
-34a-2090b+340c+11d<=0;
-80a-1410b+452c+15d<=0;
18a+900b=1;
線形計画法実行
$ lp_solve test.lp
CentOS6.5にlp_solveをいれる方法
# yum install lpsolve
でインストール
ユーザに切り替えて例題作成
$ vi test.lp
max:370c+10d;
-18a-900b+370c+10d<=0;
-74a-230b+550c+20d<=0;
-34a-2090b+340c+11d<=0;
-80a-1410b+452c+15d<=0;
18a+900b=1;
線形計画法実行
$ lp_solve test.lp
2015年11月5日木曜日
viの文字化けを治す
viで開くと文字化けしている場合があります。
簡単に解消できました。
vi ~/.vimrc
ファイルがない場合は新規作成
set encoding=utf-8
set fileencodings=iso-2022-jp,sjis,utf-8
を記述する
一度、ログオフしてログインすると反映される。
参考
https://www.softel.co.jp/blogs/tech/archives/2203
簡単に解消できました。
vi ~/.vimrc
ファイルがない場合は新規作成
set encoding=utf-8
set fileencodings=iso-2022-jp,sjis,utf-8
を記述する
一度、ログオフしてログインすると反映される。
参考
https://www.softel.co.jp/blogs/tech/archives/2203
2015年11月1日日曜日
登録:
投稿 (Atom)