⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preparedstatementtest.java

📁 第三方的SQL Server and Sybase的jdbc dirver,速度更快
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
// jTDS JDBC Driver for Microsoft SQL Server and Sybase// Copyright (C) 2004 The jTDS Project//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//package net.sourceforge.jtds.test;import java.math.BigDecimal;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.sql.Types;/** * @version $Id: PreparedStatementTest.java,v 1.40 2005/06/02 11:59:12 alin_sinpalean Exp $ */public class PreparedStatementTest extends TestBase {    public PreparedStatementTest(String name) {        super(name);    }    public void testPreparedStatement() throws Exception {        PreparedStatement pstmt = con.prepareStatement("SELECT * FROM #test");        Statement stmt = con.createStatement();        makeTestTables(stmt);        makeObjects(stmt, 10);        stmt.close();        ResultSet rs = pstmt.executeQuery();        dump(rs);        rs.close();        pstmt.close();    }    public void testScrollablePreparedStatement() throws Exception {        Statement stmt = con.createStatement();        makeTestTables(stmt);        makeObjects(stmt, 10);        stmt.close();        PreparedStatement pstmt = con.prepareStatement("SELECT * FROM #test",                                                       ResultSet.TYPE_SCROLL_SENSITIVE,                                                       ResultSet.CONCUR_READ_ONLY);        ResultSet rs = pstmt.executeQuery();        assertTrue(rs.isBeforeFirst());        while (rs.next()) {        }        assertTrue(rs.isAfterLast());        //This currently fails because the PreparedStatement        //Doesn't know it needs to create a cursored ResultSet.        //Needs some refactoring!!        // SAfe Not any longer. ;o)        while (rs.previous()) {        }        assertTrue(rs.isBeforeFirst());        rs.close();        pstmt.close();    }    public void testPreparedStatementAddBatch1()    throws Exception {        int count = 50;        Statement stmt = con.createStatement();        stmt.execute("CREATE TABLE #psbatch1 (f_int INT)");        int sum = 0;        con.setAutoCommit(false);        PreparedStatement pstmt = con.prepareStatement("INSERT INTO #psbatch1 (f_int) VALUES (?)");        for (int i = 0; i < count; i++) {            pstmt.setInt(1, i);            pstmt.addBatch();            sum += i;        }        int[] results = pstmt.executeBatch();        assertEquals(results.length, count);        for (int i = 0; i < count; i++) {            assertEquals(results[i], 1);        }        pstmt.close();        con.commit();        con.setAutoCommit(true);        ResultSet rs = stmt.executeQuery("SELECT SUM(f_int) FROM #psbatch1");        assertTrue(rs.next());        System.out.println(rs.getInt(1));        assertEquals(rs.getInt(1), sum);        rs.close();        stmt.close();    }    /**     * Test for [924030] EscapeProcesser problem with "{}" brackets     */    public void testPreparedStatementParsing1() throws Exception {        String data = "New {order} plus {1} more";        Statement stmt = con.createStatement();        stmt.execute("CREATE TABLE #psp1 (data VARCHAR(32))");        stmt.close();        stmt = con.createStatement();        stmt.execute("create procedure #sp_psp1 @data VARCHAR(32) as INSERT INTO #psp1 (data) VALUES(@data)");        stmt.close();        PreparedStatement pstmt = con.prepareStatement("{call #sp_psp1('" + data + "')}");        pstmt.execute();        pstmt.close();        stmt = con.createStatement();        ResultSet rs = stmt.executeQuery("SELECT data FROM #psp1");        assertTrue(rs.next());        assertTrue(data.equals(rs.getString(1)));        assertFalse(rs.next());        rs.close();        stmt.close();    }    /**     * Test for bug [1008882] Some queries with parameters cannot be executed with 0.9-rc1     */    public void testPreparedStatementParsing2() throws Exception {        PreparedStatement pstmt = con.prepareStatement(" SELECT ?");        pstmt.setString(1, "TEST");        ResultSet rs = pstmt.executeQuery();        assertTrue(rs.next());        assertEquals("TEST", rs.getString(1));        assertFalse(rs.next());        pstmt.close();        rs.close();    }    /**     * Test for "invalid parameter index" error.     */    public void testPreparedStatementParsing3() throws Exception {        PreparedStatement pstmt = con.prepareStatement(                "UPDATE dbo.DEPARTMENTS SET DEPARTMENT_NAME=? WHERE DEPARTMENT_ID=?");        pstmt.setString(1, "TEST");        pstmt.setString(2, "TEST");        pstmt.close();    }    /**     * Test for [931090] ArrayIndexOutOfBoundsException in rollback()     */    public void testPreparedStatementRollback1() throws Exception {        Connection localCon = getConnection();        Statement stmt = localCon.createStatement();        stmt.execute("CREATE TABLE #psr1 (data BIT)");        localCon.setAutoCommit(false);        PreparedStatement pstmt = localCon.prepareStatement("INSERT INTO #psr1 (data) VALUES (?)");        pstmt.setBoolean(1, true);        assertEquals(1, pstmt.executeUpdate());        pstmt.close();        localCon.rollback();        ResultSet rs = stmt.executeQuery("SELECT data FROM #psr1");        assertFalse(rs.next());        rs.close();        stmt.close();        localCon.close();        try {            localCon.commit();            fail("Expecting commit to fail, connection was closed");        } catch (SQLException ex) {            assertEquals("HY010", ex.getSQLState());        }        try {            localCon.rollback();            fail("Expecting rollback to fail, connection was closed");        } catch (SQLException ex) {            assertEquals("HY010", ex.getSQLState());        }    }    /**     * Test for bug [938494] setObject(i, o, NUMERIC/DECIMAL) cuts off decimal places     */    public void testPreparedStatementSetObject1() throws Exception {        BigDecimal data = new BigDecimal(3.7D);        Statement stmt = con.createStatement();        stmt.execute("CREATE TABLE #psso1 (data MONEY)");        PreparedStatement pstmt = con.prepareStatement("INSERT INTO #psso1 (data) VALUES (?)");        pstmt.setObject(1, data);        assertEquals(1, pstmt.executeUpdate());        pstmt.close();        ResultSet rs = stmt.executeQuery("SELECT data FROM #psso1");        assertTrue(rs.next());        assertEquals(data.doubleValue(), rs.getDouble(1), 0);        assertFalse(rs.next());        rs.close();        stmt.close();    }    /**     * Test for bug [938494] setObject(i, o, NUMERIC/DECIMAL) cuts off decimal places     */    public void testPreparedStatementSetObject2() throws Exception {        BigDecimal data = new BigDecimal(3.7D);        Statement stmt = con.createStatement();        stmt.execute("CREATE TABLE #psso2 (data MONEY)");        PreparedStatement pstmt = con.prepareStatement("INSERT INTO #psso2 (data) VALUES (?)");        pstmt.setObject(1, data, Types.NUMERIC);        assertEquals(1, pstmt.executeUpdate());        pstmt.close();        ResultSet rs = stmt.executeQuery("SELECT data FROM #psso2");        assertTrue(rs.next());        assertEquals(data.doubleValue(), rs.getDouble(1), 0);        assertFalse(rs.next());        rs.close();        stmt.close();    }    /**     * Test for bug [938494] setObject(i, o, NUMERIC/DECIMAL) cuts off decimal places     */    public void testPreparedStatementSetObject3() throws Exception {        BigDecimal data = new BigDecimal(3.7D);        Statement stmt = con.createStatement();        stmt.execute("CREATE TABLE #psso3 (data MONEY)");        PreparedStatement pstmt = con.prepareStatement("INSERT INTO #psso3 (data) VALUES (?)");        pstmt.setObject(1, data, Types.DECIMAL);        assertEquals(1, pstmt.executeUpdate());        pstmt.close();        ResultSet rs = stmt.executeQuery("SELECT data FROM #psso3");        assertTrue(rs.next());        assertEquals(data.doubleValue(), rs.getDouble(1), 0);        assertFalse(rs.next());        rs.close();        stmt.close();    }    /**     * Test for bug [938494] setObject(i, o, NUMERIC/DECIMAL) cuts off decimal places     */    public void testPreparedStatementSetObject4() throws Exception {        BigDecimal data = new BigDecimal(3.7D);        Statement stmt = con.createStatement();        stmt.execute("CREATE TABLE #psso4 (data MONEY)");        PreparedStatement pstmt = con.prepareStatement("INSERT INTO #psso4 (data) VALUES (?)");        pstmt.setObject(1, data, Types.NUMERIC, 4);        assertEquals(1, pstmt.executeUpdate());        pstmt.close();        ResultSet rs = stmt.executeQuery("SELECT data FROM #psso4");        assertTrue(rs.next());        assertEquals(data.doubleValue(), rs.getDouble(1), 0);        assertFalse(rs.next());        rs.close();        stmt.close();    }    /**     * Test for bug [938494] setObject(i, o, NUMERIC/DECIMAL) cuts off decimal places     */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -