mysql查询不是在java中执行而是在我的SQLYog中执行

时间:2013-10-29 12:24:57

标签: java mysql sql

任何人都可以告诉为什么以下更新查询在我的SQLYog编辑器中直接执行时工作正常,但不是从java执行。它没有给出任何例外但没有更新到数据库中。

这是更新查询

UPDATE hotel_tables SET hotel_tables.status='reserved' WHERE hotel_tables.section='pub' AND tableno='4' AND ('4' NOT IN (SELECT tableno FROM table_orders WHERE outlet='pub'))

Java代码

public static void main(String[] args) throws Exception {
    int update = new Dbhandler().update("UPDATE hotel_tables SET hotel_tables.status='reserved' WHERE hotel_tables.section='pub' AND tableno='4' AND ('4' NOT IN (SELECT tableno FROM table_orders WHERE outlet='pub'))");
}

public int update(String Query)throws Exception
{
    try
    {
        cn=getconn();
        stmt=(Statement) cn.createStatement();
        n=stmt.executeUpdate(Query);
        stmt.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
        throw(e);
    }
    finally
    {
        cn.close();
    }
    return n;
}

public Connection getconn()
{
    try
    {
        Class.forName(driver).newInstance();
        String url="jdbc:mysql://localhost/kot?user=root&password=root";
        cn=(Connection) DriverManager.getConnection(url);
    }
    catch(Exception e)
    {
        System.out.println("DBHandler ERROR:"+e);
    }
    return cn;
}

2 个答案:

答案 0 :(得分:0)

在我切换到Spring的JdbcTemplate框架之前,我就是这样做的。也许这会有所帮助。它看起来与你的非常相似。

public static int runUpdate(String query, DataSource ds, Object... params) throws SQLException  {
    int rowsAffected = 0;
    Connection conn = null;
    PreparedStatement stmt = null;
    try {
        conn = ds.getConnection();
        stmt = conn.prepareStatement(query);
        int paramCount = 1;
        for (Object param : params) {
            stmt.setObject(paramCount++, param);
        }
        rowsAffected = stmt.executeUpdate();
        conn.commit();
    } catch (SQLException sqle) {
        throw sqle;
        //log error
    } finally {
        closeConnections(conn, stmt, null);
    }
    return rowsAffected;
}

有一些微妙的差异。我做了提交,虽然autoCommit是默认设置。

答案 1 :(得分:0)

试试这样:     的DriverManager.getConnection( “JDBC:MySQL的://本地主机:3306 /果德”, “根”, “根”);