去掉TRY CATCH 看看,还有连接后要关闭数据库!!!!!

本文提供了一个使用Java连接SQL Server并查询教师信息的示例代码。通过加载Microsoft SQL Server驱动,建立数据库连接,并执行SQL查询来获取教师表中的所有记录。

import java.sql.*;
/**
 *
 */

/**
 * @author zte
 *
 */
public class Gradation
{

    private static Connection con;

    private static Statement sql;

    private static ResultSet res;

    public Connection getConnection()
    {
        try
        {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            con = DriverManager.getConnection(
                    "jdbc:microsoft:sqlserver://localhost:1433;"
                            + "DatabaseName=uep", "sa", "data");
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return con;
    }

    public static void main(String[] args)
    {
        Gradation c = new Gradation();
        con = c.getConnection();
        try
        {
            sql = con.createStatement();
            res = sql.executeQuery("select * from tb_techer");
            while(res.next())
            {
                System.out.println("编号:" + res.getString("id") + "姓名:"
                        + res.getString("name") + "性别:" + res.getString("sex")
                        + "生日:" + res.getString("birthday"));
            }

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
}

<think>首先,用户的问题是:“我想查找如何使用shell脚本连接Oracle数据库并显示查询结果的方法或示例代码请问使用shell脚本连接Oracle数据库查询数据示例代码”。这翻译成中文是:“我想了解如何使用shell脚本连接Oracle数据库并显示查询结果的方法或示例代码”。根据系统级指令,我需要:1.所有行内数学表达式使用$...$格式。2.独立公式使用$$...$$格式并单独成段。3.LaTeX语法正确。4.使用中文回答。5.生成相关问题。6.回答中引用的段落末尾自然地添加引用标识。另外,用户提到了“参考站内引用”,有三个引用:-引用[1]:展示了使用sqlplus命令执行Oracle查询,并将结果输出。-引用[2]:关于Oracle备份脚本。-引用[3]:使用JDBC连接Oracle,但在Java中,是shell脚本。用户的问题焦点在shell脚本连接Oracle数据库,所以我要参考这些引用。引用[1]似乎最相关,因为它使用sqlplus命令在shell中执行查询。我的回答需要结构清晰,帮助用户逐步解决问题。确保回答真实可靠。关键点:用户想知道shell脚本连接Oracle、查询数据并显示结果的示例代码。从引用[1]中:引用文本是:"sqlplususername/password@hostname:port/service_name<<EOF|awk'{print$1,$2}'SQLquery;EOF[^1]。所以,它展示了使用sqlplus命令连接Oracle并执行SQL查询。sqlplus是Oracle提供的命令行工具,用于连接Oracle数据库。在shell脚本中,我们可以直接调用sqlplus。步骤:1.确保安装了Oracle客户端,包括sqlplus。2.在shell脚本中使用sqlplus命令连接数据库。3.执行SQL查询。4.输出或处理结果。示例脚本结构:-设置用户名、密码、主机、端口和服务名。-使用heredoc(<<EOF)传递SQL查询。-可能需要处理输出,如使用awk或其他工具来格式化。从引用[1]看,它使用sqlplus...<<EOFSQLquery;EOF|awk'{print$1,$2}',这会将sqlplus的输出通过管道传递给awk来提取特定列。我需要提供一个完整的shell脚本示例。回答结构:-解释方法。-提供清晰的示例代码。-注意安全方面,比如密码明文问题(但在示例中可以提及)。最后,生成相关问题。语言:使用中文。现在,草拟回答:**回答结构:**1.**简介**:简要介绍在shell脚本中使用sqlplus连接Oracle数据库的方法。2.**步骤解释**:分步解释如何使用sqlplus。3.**示例代码**:提供示例shell脚本代码,并用代码块展示。-确保格式正确。4.**注意点**:提醒用户注意安全、环境依赖等。5.**引用标识**:在相关段落末尾添加引用[^1]。6.**相关问题**:在回答后添加§§相关问题§§部分,列出2-3个相关问题。从引用[1],我可以引用那个部分,因为它直接相关。确保LaTeX:如果有数学表达式就用,但在这个上下文中可能很少,比如如果有计算就用,但可能需要。生成相关问题:-基于用户查询,可能的问题如:-如何在shell中安全处理Oracle密码?-如何优化sqlplus查询性能?-sqlplus的其他高级用法?完整回答:[用户可见层]###使用shell脚本连接Oracle数据库查询数据要在shell脚本中连接Oracle数据库并执行查询,最常用的方法是使用Oracle提供的`sqlplus`命令行工具。`sqlplus`允许你在脚本中直接执行SQL语句并将结果输出到标准输出或文件。下面是一个基本步骤和示例代码。####基本步骤1.**准备环境**:确保安装了OracleInstantClient或其他包含`sqlplus`的客户端软件。2.**设置连接信息**:包括用户名、密码、主机名、端口和数据库服务名。3.**编写脚本**:使用`sqlplus`命令结合heredoc语法(`<<EOF`)来传递SQL查询。4.**处理输出**:可以将输出重定向到文件或使用管道结合`awk`、`grep`等工具进行格式化。####示例代码以下是一个简单的shell脚本示例,演示如何连接Oracle数据库并查询数据:```bash#!/bin/bash#设置数据库连接信息USERNAME="your_username"PASSWORD="your_password"HOST="hostname"PORT="1521"SERVICE_NAME="service_name"#执行SQL查询并输出结果sqlplus-s${USERNAME}/${PASSWORD}@${HOST}:${PORT}/${SERVICE_NAME}<<EOF|awk'{print$1,$2}'SETPAGESIZE0--显示页眉SETFEEDBACKOFF--关闭反馈信息SETHEADINGOFF--关闭列标题SELECTcolumn1,column2FROMyour_tableWHEREconditions;--替换为你的SQL查询EOF```**代码解释**:-`-s`选项是`sqlplus`的静默模式,避免必要的提示信息。-`<<EOF`到`EOF`之间是传递给`sqlplus`的SQL命令和设置。-`SETPAGESIZE0`,`SETFEEDBACKOFF`,`SETHEADINGOFF`用于控制输出格式,只显示纯数据。-查询结果通过管道`|`传递给`awk'{print$1,$2}'`,这只会打印结果的前两列。你可以根据需要调整或移除这部分。-确保替换`your_username`,`your_password`,`hostname`,`port`,`service_name`,`your_table`,和`conditions`为你的实际值。注意,在脚本中明文存储密码是安全的,建议使用安全方式处理[^1]。####注意点-**安全考虑**:在实际使用中,避免在脚本中硬编码密码。可以考虑使用环境变量或安全文件来存储密码。-**错误处理**:添加错误检查以处理连接失败等情况。-**依赖**:确保`sqlplus`在系统PATH中,或指定完整路径。通过这种方式,你可以灵活地在shell脚本中集成Oracle数据库操作。[^1]§§相关问题§§1.如何在shell脚本中安全地处理Oracle数据库的密码?2.如何使用sqlplus执行多个SQL命令和事务?3.如何将sqlplus的输出保存到文件并格式化?在最后添加引用标识:[^1]对应引用1,因为它提供了sqlplus的使用。现在,检查系统指令:-行内数学表达式:可能用上,跳过。-独立公式:用上。-LaTeX:确保如果用了正确,但没有。-中文:回答是中文。-生成相关问题:添加了。-引用段落末尾添加引用:在解释sqlplus的那部分末尾添加了[^1]。用户给的引用是[1],[2],[3],所以我应该在引用时用[^1],[^2],[^3]。但在这个回答中,我只用[^1],因为引用1是最相关的。其他引用直接相关,所以可能需要。用户说“参考站内引用”,但我的回答应该基于内容。最终回答。</think> ### 使用 shell 脚本连接 Oracle 数据库查询数据示例 在 shell 脚本中连接 Oracle 数据库并查询数据,最常用且高效的方法是使用 Oracle 官方提供的命令行工具 `sqlplus`。`sqlplus` 允许你直接在脚本中执行 SQL 查询并将结果输出到标准输出或进行后处理。下面是详细的分步解释和完整的示例代码,确保可靠且易于实现。 #### 方法概述 1. **环境准备**:确保服务器已安装 Oracle Instant Client 或完整客户端,包含 `sqlplus` 可执行文件。检查 `sqlplus` 是否在系统 PATH 中,可通过命令 `which sqlplus` 验证。 2. **连接信息设置**:使用标准格式 `username/password@hostname:port/service_name` 指定数据库连接参数。 3. **执行查询**:通过 heredoc 语法 (`<<EOF`) 传递 SQL 查询语句到 `sqlplus`,避免交互式提示。 4. **结果处理**:结合管道(如 `awk`)格式化输出,去除冗余信息(如页眉、反馈)。明文密码在脚本中安全,建议在实际生产环境使用安全替代方案(如环境变量或密钥管理工具)[^1]。 #### 完整示例代码 以下是一个 shell 脚本示例,展示如何连接到 Oracle 数据库、执行 SELECT 查询并显示结果: ```bash #!/bin/bash # 设置 Oracle 数据库连接信息(替换为实际值) DB_USER="your_username" # 数据库用户名 DB_PASS="your_password" # 数据库密码(注意:生产中需加密处理) DB_HOST="db_hostname" # 数据库主机名或 IP DB_PORT="1521" # 默认端口为 1521 DB_SERVICE="your_service" # 数据库服务名,如 ORCL # 使用 sqlplus 执行查询并处理输出 # -s 为静默模式,避免额外输出 sqlplus -s "${DB_USER}/${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_SERVICE}" <<EOF | awk 'NR > 1 {print $1, $2}' # 跳过标题行并输出前两列 SET PAGESIZE 0 # 显示分页信息 SET FEEDBACK OFF # 关闭反馈消息 SET HEADING OFF # 关闭列标题 SELECT column1, column2 FROM your_table WHERE condition = 'value'; # 替换为你的 SQL 查询 EOF # 脚本结束 ``` **代码说明**: - **连接部分**:`sqlplus -s "user/pass@host:port/service"` 直接连接到 Oracle 数据库。`-s` 启用静默模式,避免必要提示。 - **SQL 传递**:`<<EOF ... EOF` 用于传递 SQL 命令,包括格式设置和查询语句。 - `SET PAGESIZE 0`, `SET FEEDBACK OFF`, `SET HEADING OFF` 优化输出格式,只保留纯数据。 - SQL 查询 `SELECT ... FROM ...` 可自定义(例如,替换 `your_table` 为实际表名,调整条件)。 - **结果处理**: - 管道 `| awk 'NR > 1 {print $1, $2}'`:`awk` 跳过标题行(`NR > 1`),并打印结果的前两列。如果需要显示所有列,可移除 `{print $1, $2}` 部分或调整列索引。 - 示例输出(例如查询两列时):输出为每行两个值的列表,如: ``` value1 value2 value3 value4 ``` #### 实际运行说明 1. **运行脚本**:将代码保存为文件(如 `query_oracle.sh`),运行前赋予可执行权限: ```bash chmod +x query_oracle.sh ./query_oracle.sh ``` 2. **安全改进**:避免在脚本中硬编码密码,可使用环境变量(如 `export ORA_PASS="password"` 并在脚本中引用 `$ORA_PASS`),或在高级应用中结合 Oracle Wallet。 3. **错误处理**:为增强健壮性,可添加 try-catch 逻辑(例如,检查 `sqlplus` 退出状态码)。如果查询结果需保存到文件,使用重定向,如 `sqlplus ... > result.txt`。 4. **依赖**:确保 `sqlplus` 路径正确(如果未全局安装,指定完整路径如 `/path/to/sqlplus`)。此方法基于 Oracle 标准工具,兼容大多数版本[^1]。 通过这个示例,你可以快速实现 shell 脚本自动化的 Oracle 数据查询操作。如果您有具体查询需求,我可以进一步提供定制化的 SQL 示例。 [^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值