问题:到了数据库的时候不见数据库启动?
postgresql 数据库
环境变量是进到\bin目录
pg_ctl 为数据库启动命令。下resin同。
各位大哥帮帮手。package com.jasinda.JToNTservice;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;public class TestNTService { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub Process pro;
try {
pro = Runtime.getRuntime().exec("cmd");
System.out.println("000000");
InputStream is = pro.getInputStream();
//InputStream isES = pro.getErrorStream();
OutputStream os = pro.getOutputStream();
String sCmd0 = "cd %PGSQL_HOME%";// such as dir
os.write(sCmd0.getBytes());
System.out.println("111111");
System.out.println();
String sCmd1="pg_ctl -D ../data start";
os.write(sCmd1.getBytes());
System.out.println("222222");
System.out.println();
// try {
// pro.wait(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
String sCmd2 = "cd %RESIN_HOME%";
os.write(sCmd2.getBytes());
System.out.println("333333");
System.out.println();
String sCmd3="httpd.exe";
os.write(sCmd3.getBytes());
System.out.println("444444");
System.out.println();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (true) {
String s = br.readLine();
if (s == null)
break;
System.out.println(s);
}
//br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 从is和isES中可以得到数据
}}}
postgresql 数据库
环境变量是进到\bin目录
pg_ctl 为数据库启动命令。下resin同。
各位大哥帮帮手。package com.jasinda.JToNTservice;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;public class TestNTService { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub Process pro;
try {
pro = Runtime.getRuntime().exec("cmd");
System.out.println("000000");
InputStream is = pro.getInputStream();
//InputStream isES = pro.getErrorStream();
OutputStream os = pro.getOutputStream();
String sCmd0 = "cd %PGSQL_HOME%";// such as dir
os.write(sCmd0.getBytes());
System.out.println("111111");
System.out.println();
String sCmd1="pg_ctl -D ../data start";
os.write(sCmd1.getBytes());
System.out.println("222222");
System.out.println();
// try {
// pro.wait(1000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
String sCmd2 = "cd %RESIN_HOME%";
os.write(sCmd2.getBytes());
System.out.println("333333");
System.out.println();
String sCmd3="httpd.exe";
os.write(sCmd3.getBytes());
System.out.println("444444");
System.out.println();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (true) {
String s = br.readLine();
if (s == null)
break;
System.out.println(s);
}
//br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 从is和isES中可以得到数据
}}}
批处理如下:
@echo offcd $PRODUCT_NAME$\window\pgsql\bin
pg_ctl -D ../data startpause$PRODUCT_NAME$window\resin3.0\httpd.exepauseecho. & pausejava程序如下:
package com.jasinda.JToNTservice;import java.io.IOException;public class TestService { public static void main(String[] args) {
Runtime runTime = Runtime.getRuntime();
try {
runTime.exec("C:\\Program Files\\jasindawindow\\setenv\\start.bat");
} catch (IOException e) { } }}
结果没什么反应。
单独运行批处理时就很好。
谢谢楼上先。
像这中命令后面加上"\n",表示回车。否则不会运行。
还有最好将命令运行的输出显示出来,否则看不到运行结果,不方便调试。
SORRY,感谢大家的关心帮助。