通过webservice调用SQL,但它不起作用

时间:2016-01-04 03:41:56

标签: java web-services postgresql

我的代码出了问题。

我写了一个简单的java应用程序连接到postgreSQL,代码在下面,它的工作。

package jdbctest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JDBCtest 
{
    public static void main(String[] args) 
    {
        Connection con = null;
        PreparedStatement pst = null;

        String url = "jdbc:postgresql://localhost/postgres";
        String user = "root";
        String password = "1234";
        String SQL="";

        try 
        {
            String a="pswd";
            con = DriverManager.getConnection(url, user, password);

            //Insert            
            SQL = "Insert into inserttable(idnb,data)  Values('ID',?)";
            pst = con.prepareStatement(SQL);
            pst.setString(1,a);
            pst.executeUpdate();
        } 
        catch (SQLException ex) 
        {
            Logger lgr = Logger.getLogger(JDBCtest .class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        } 
        finally 
        {
            try 
            {

                if(con != null) con.close();
                if(pst!=null) pst.close();
            } 
            catch (SQLException ex) 
            {
                Logger lgr = Logger.getLogger(JDBCtest .class.getName());
                lgr.log(Level.WARNING, ex.getMessage(), ex);
            }
        }    
    }
}

然后我创建了一个Web服务来做同样的事情,WSDL创建没有错误。

package Use.SQL;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jws.Oneway;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

@WebService(serviceName = "pgSQL")
public class pgSQL 
{
    @WebMethod(operationName = "insert")
    @Oneway
    public void insert(@WebParam(name = "infor") String infor) 
    {

        Connection con = null;
        PreparedStatement pst = null;
        ResultSet Check = null;

        String url = "jdbc:postgresql://localhost/postgres";
        String user = "root";
        String password = "1234";
        String SQL="";
        try 
        {
            con = DriverManager.getConnection(url, user, password);
            //Insert            
            SQL = "Insert into inserttable(idnb,data)  Values('ID',?)";
            pst = con.prepareStatement(SQL);
            pst.setString(1,infor);
            pst.executeUpdate();
        } 
        catch (SQLException ex) 
        {
            Logger lgr = Logger.getLogger(pgSQL .class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);
        } 
        finally 
        {
            try 
            {
                if (con != null) con.close();
                if(pst!=null) pst.close();
            } 
            catch (SQLException ex) 
            {
                Logger lgr = Logger.getLogger(pgSQL .class.getName());
                lgr.log(Level.WARNING, ex.getMessage(), ex);
            }
        }    
    }
 }

毕竟,我写了一个名为wsdl的应用程序,如下所示。

public class JavaApplication 
{
    public static void main(String[] args) 
    {
        insert("pswd");
    }    

    private static void insert(java.lang.String infor) {
        use.sql.PgSQL_Service service = new use.sql.PgSQL_Service();
        use.sql.PgSQL port = service.getPgSQLPort();
        port.insert(infor);
    }
}

运行项目没有错误,但数据库中没有任何事情发生。

伙计们,对这个问题有任何想法吗?

谢谢你们,你们真的给了我有用的信息。

现在我意识到问题是由司机造成的。

我确实在项目中添加了jar文件,但不知道如何,webservice无法获得它。

还没有解决。

它最终在按代码导入Driver后工作。

谢谢你们:D

1 个答案:

答案 0 :(得分:0)

String url = "jdbc:postgresql://localhost/postgres";

如果你的PostgreSQL端口不是80,请写端口

String url = "jdbc:postgresql://localhost:port/postgres";