PreparedStatement執行sql語句

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.Test;

import util.JdbcUtil;
/**
 * PreparedStatement執行sql語句
 * @author APPle
 *
 */
public class Demo1 {

    /**
     * 增加
     */
    @Test
    public void testInsert() {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            //1.获取连接
            conn = JdbcUtil.getConnection();

            //2.准备预编译的sql
            String sql = "INSERT INTO student2(NAME,gender) VALUES(?,?)"; //?表示一个参数的占位符

            //3.执行预编译sql语句(检查语法)
            stmt = conn.prepareStatement(sql);

            //4.设置参数值
            /**
             * 参数一: 参数位置  从1开始
             */
            stmt.setString(1, "李四");
            stmt.setString(2, "男");

            //5.发送参数,执行sql
            int count = stmt.executeUpdate();

            System.out.println("影响了"+count+"行");

        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        } finally {
            JdbcUtil.close(conn, stmt);
        }
    }

    /**
     * 修改
     */
    @Test
    public void testUpdate() {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            //1.获取连接
            conn = JdbcUtil.getConnection();

            //2.准备预编译的sql
            String sql = "UPDATE student2 SET NAME=? WHERE id=?"; //?表示一个参数的占位符

            //3.执行预编译sql语句(检查语法)
            stmt = conn.prepareStatement(sql);

            //4.设置参数值
            /**
             * 参数一: 参数位置  从1开始
             */
            stmt.setString(1, "王五");
            stmt.setInt(2, 9);

            //5.发送参数,执行sql
            int count = stmt.executeUpdate();

            System.out.println("影响了"+count+"行");

        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        } finally {
            JdbcUtil.close(conn, stmt);
        }
    }

    /**
     * 删除
     */
    @Test
    public void testDelete() {
        Connection conn = null;
        PreparedStatement stmt = null;
        try {
            //1.获取连接
            conn = JdbcUtil.getConnection();

            //2.准备预编译的sql
            String sql = "DELETE FROM student2 WHERE id=?"; //?表示一个参数的占位符

            //3.执行预编译sql语句(检查语法)
            stmt = conn.prepareStatement(sql);

            //4.设置参数值
            /**
             * 参数一: 参数位置  从1开始
             */
            stmt.setInt(1, 9);

            //5.发送参数,执行sql
            int count = stmt.executeUpdate();

            System.out.println("影响了"+count+"行");

        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        } finally {
            JdbcUtil.close(conn, stmt);
        }
    }

    /**
     * 查询
     */
    @Test
    public void testQuery() {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            //1.获取连接
            conn = JdbcUtil.getConnection();

            //2.准备预编译的sql
            String sql = "SELECT * FROM student2"; 

            //3.预编译
            stmt = conn.prepareStatement(sql);

            //4.执行sql
            rs = stmt.executeQuery();

            //5.遍历rs
            while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String gender = rs.getString("gender");
                System.out.println(id+","+name+","+gender);
            }

        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        } finally {
            //关闭资源
            JdbcUtil.close(conn,stmt,rs);
        }
    }
}
时间: 2024-11-06 11:56:41

PreparedStatement執行sql語句的相关文章

PreparedStatement执行sql語句

import com.loaderman.util.JdbcUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import org.junit.Test; /** * PreparedStatement執行sql語句 * */ public class Demo1 { /** * 增加 */ @Test public void testInsert() {

PL/SQL Developer查詢已經執行過的SQL語句記錄 Ctrl+E

PL/SQL Developer查詢已經執行過的SQL語句記錄 最近提数比较多,没有已存在的脚本信息,就手工写呀... 一次性打开了多个提数脚本文件,结果执行完后把脚本保存好了,但是最后的整理其它脚本时 把原来的存档的脚本给不小心替换掉了 还ctrl+s保存了,抱着侥幸心理 可能我重新打开会回来吧 结果不会 重新打开脚本是替换之后的脚本信息.... 啊~ 我辛辛苦苦写的提数脚本就这么没了没了...   惨兮兮....  然后就去想办法看看有没有可能能将自己昨天执行的sql拿出来再做存档(免得下次

sqlserver 函數執行動態sql語句,取值

declare @sql nvarchar(4000)declare @username nvarchar(20)beginset @sql ='select @username=Name from(select top 2 pubuser.pfs_userm.Name from pubuser.pfs_usermexcept select top 1 pubuser.pfs_userm.Name from pubuser.pfs_userm) A 'exec sp_executesql @sq

使用Mutex實現單一程式執行個體的注意事項(转)

相信大家都知道在.NET程式中若要實現單一程式執行個體,一般來說有幾種方法,像是去判斷是否已經有開啟的Process是相同的程式.用Mutex與Semaphore之類的技術來判斷是否程式正在開啟.但是很多網路上的文章都忽略了在用Mutex實現單一程式執行個體時,其實會有些必須要注意的地方,導致於在實際運用上沒有發揮到該有的效果. 以一個簡單的例子來看,一般我們在網路上常看到的使用方式大概就像下面的程式碼片段類似,建構Mutex時就會回傳該Mutex是否已經存在,利用該回傳值來決定程式應該繼續開啟

如何通過SSH讓服務器遠程執行命令?

如何通過SSH讓服務器遠程執行命令? 0x00 前言 我有一塊Pi,掛着個服務,但是這服務只要長時間沒有通訊就會自己掛起.試着用crontab每小時自動重啓,有時候還是得手動重啓服務. 所以,我想幹脆每次打開終端要用的時候啓動一下得了. 但是每次SSH,輸密碼,執行命令太麻煩了,就想着能不能只用一條命令完成這件事. 0x01 SSH執行命令 看了下手冊,通過SSH執行命令,其實只要在主機名後面加個命令就完了. ssh [email protected]1.6 reboot 0x02 免密登入 遠

[Batch檔案筆記] 在UNC路徑中執行Batch檔

為了讓其他人可以免安裝又可以執行python程式所以我把python portable版本 winpython 放在samba的空間共享但是使用者如果要開 winpython cammand prompt .exe 打指令執行程式的話又太麻煩 所以寫了batch檔來直接執行我的python程式 因為是共享空間 所以使用 pushd%~dp0 是當前路徑接下來就是 python 再加上要執行檔案的路徑就可以了~ pushd %~dp0\python-2.7.10 python Project_Ev

Unity strip engine code 遇到執行不能之問題與解決

遊戲發布在 WebGL 平台發現檔案還是太大,因此在 IL2CPP 的環境下,開啟 Strip engine code 編譯功能,嘗試看看能不能減少一些檔案容量. 但由於我們另外有載入 Scene stream assetbundles 的機制,因此遇到開啟 Strip engine code 後,無法正常執行的情形. 經過 Kelvin Lo 技術支援以及時間測試後,終究能夠正常執行,留下整件事情的經過.技術問題以及相關解法支援等等資料. 測試環境 Unity5.5.1f1,Windows 1

執行shell script與subshell

兩種方法 喚起新shell再執行shell scripts 在目前shell執行shell scripts 喚起另一個shell來執行的scripts在scripts檔頭最前面前要加 #! /bin/sh 第一種方法是在shell script 文字檔前指出shell scripts解讀的程式在那(也就是 我們的shell)然後把文字檔的執行權限打開,照一般執行可執行檔方式執行或者叫 一個shell來解釋文字檔test.sh. $ test.sh $ /bin/sh test.sh $ ( .

如何对于几百行SQL语句进行优化?

1.最近在开发中遇到的一些关于几百行SQL语句做查询的问题,需要如何的解决优化SQL这确实是个问题,对于当下的ORM 框架 EF 以及其他的一些的开源的框架例如Drapper ,以及Sqlite-Sugar 等等,对于查询的速度以及性能确实还不错,但是对于几百条的SQL语句那么可能就不行了这些轻量级的框架扛不住.当在写SQL语句需要注意的规则都无法提高速率的时候,个人认为还是需要传统的ADO.NET 参数化的SQL来进行解决问题. 下面是我最近开发当中遇到的一些复杂的SQL的语句如何处理以及优化