Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java JDBC+mysql数据库的更新查询_Java_Mysql_Sql_Jdbc - Fatal编程技术网

java JDBC+mysql数据库的更新查询

java JDBC+mysql数据库的更新查询,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我正在尝试对表医生运行更新查询。表的主键定义为复合主键deptid,docid。我试图做的是通过另一个查询,根据deptid和docid更新字段名称、资格和时间。 我相信我在做一些非常愚蠢的事情,但我找不到它。有人能帮忙吗 String did= request.getParameter("text1"); String dname = request.getParameter("text2"); String desig = request.getParameter("text3"); Str

我正在尝试对表医生运行更新查询。表的主键定义为复合主键deptid,docid。我试图做的是通过另一个查询,根据deptid和docid更新字段名称、资格和时间。 我相信我在做一些非常愚蠢的事情,但我找不到它。有人能帮忙吗

String did= request.getParameter("text1");
String dname = request.getParameter("text2");
String desig = request.getParameter("text3");
String qualification = request.getParameter("text4");
String time = request.getParameter("text5");

String className = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://192.168.10.13";
String user = "root";
String password = "";

PreparedStatement ps;
ResultSet rs;

try {
    Class.forName(className);                
    Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/webhospital","root","");
    //        PreparedStatement prepStmt = (PreparedStatement) conn.prepareStatement("Select * from tbl_userinfo");
    ps = (com.mysql.jdbc.PreparedStatement) con.prepareStatement("update doctors set Designation=?,Qualification=?,Time= ? where deptid =? and docid IN(select docid from doctors where doctorname='dname';)");
    ps.setString(1, did);
    ps.setString(3,desig);
    ps.setString(4,qualification);
    ps.setString(5,time);
    ps.executeUpdate();
}  catch (ClassNotFoundException cx) {
    out.println(cx);
} catch (SQLException ex) {
    Logger.getLogger(MysqlInsertServlet.class.getName()).log(Level.SEVERE, null, ex);
}

查询中需要的一个更改是

其中doctorname='dname';==>>其中doctorname='+dname+'

您有4个问号,但设置顺序错误,为什么不设置为:

ps.setString(1, desig);
                ps.setString(2,qualification);
                ps.setString(3,time);
                ps.setString(4,deptId);
如果需要,则必须提供值来代替问号占位符 在可以执行PreparedStatement对象之前,存在任何错误。做 这可以通过调用 PreparedStatement类。下面的语句提供了这两种方法 名为updateSales的PreparedStatement中的问号占位符:

updateSales.setInt1,e.getValue.intValue; updateSales.setString 2,e.getKey

每个setter方法的第一个参数指定 问号占位符。在本例中,setInt指定第一个 占位符和设置字符串指定第二个占位符


我认为在不编辑代码的情况下,向您展示一个简单的示例是很好的

    PrintWriter out = response.getWriter();
    String Title = request.getParameter("Title");
    String Artist = request.getParameter("Artist");
    String Country = request.getParameter("Country");
    String price = request.getParameter("price");
    String Year = request.getParameter("Year");

    try {
        //loading driver 

        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

        //creating connection with the database 
        Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/sample", "app", "app");

        PreparedStatement ps = con.prepareStatement("update COMPACT_DISK set TITLE=?,ARTIST=?,COUNTRY=?,PRICE=?,YEARS=? where TITLE=?");

        ps.setString(1, Title);
        ps.setString(2, Artist);
        ps.setString(3, Country);
        ps.setString(4, price);
        ps.setString(5, Year);
        ps.setString(6, Title);
        int i = ps.executeUpdate();
        if (i > 0) {
            out.println("Compact disk successfully inserted");
        }
    } catch (Exception se) {
        out.println("Error Occured : \n" + se.getLocalizedMessage());
        se.printStackTrace();
    }

不起作用。。ps=com.mysql.jdbc.PreparedStatement con.prepareStatementupdate医生设置名称=?,资格=?,时间=?其中deptid=?和docid INselect docid from doctorname='+dname+';;如果您没有获得任何compiletime/runtime eror,那么您的查询将负责更新。只检查您的查询。您不知道指出该订单对您有多大帮助!谢谢。现在开始工作了
    PrintWriter out = response.getWriter();
    String Title = request.getParameter("Title");
    String Artist = request.getParameter("Artist");
    String Country = request.getParameter("Country");
    String price = request.getParameter("price");
    String Year = request.getParameter("Year");

    try {
        //loading driver 

        Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

        //creating connection with the database 
        Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/sample", "app", "app");

        PreparedStatement ps = con.prepareStatement("update COMPACT_DISK set TITLE=?,ARTIST=?,COUNTRY=?,PRICE=?,YEARS=? where TITLE=?");

        ps.setString(1, Title);
        ps.setString(2, Artist);
        ps.setString(3, Country);
        ps.setString(4, price);
        ps.setString(5, Year);
        ps.setString(6, Title);
        int i = ps.executeUpdate();
        if (i > 0) {
            out.println("Compact disk successfully inserted");
        }
    } catch (Exception se) {
        out.println("Error Occured : \n" + se.getLocalizedMessage());
        se.printStackTrace();
    }