面试----JDBC

JDBC数据库操作详解

目录

 

1:Statement,PrepareStatement,和CallableStatement。

2:jdbc操作数据库


1:Statement,PrepareStatement,和CallableStatement。

 

Statement执行不带参数的简单sql语句,并返回它所生产的结果的对象。每次执行SQl时候都要编译SQl语句。

PrepareStatement表示预编译的sql语句,用于执行带参数的预编译SQL语句。

PrepareStatement stmt=null;
。。。。。。
stmt= con.PrepareStatement(insert into * from user(var1,var2)values(?,?));
stmt.setInt(1,1);
stmt.setInt(2,2);

2:jdbc操作数据库

public class opprationJDBC {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
                 String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&characterEncoding=utf-8";
                 String USER="root";
                 String PASSWORD="root";
                 //1.加载驱动程序
                Class.forName("com.mysql.jdbc.Driver");
                 //2.获得数据库链接
                 Connection conn= DriverManager.getConnection(URL, USER, PASSWORD);
                 //3.通过数据库的连接操作数据库(使用Statement类)
                 Statement st=conn.createStatement();
                 //3实现增删改查
                ResultSet rs=st.executeQuery("select * from user");
                 //4.处理数据库的返回结果(使用ResultSet类)
                 while(rs.next()){
                         System.out.println(rs.getString("user_name")+" "
                                               +rs.getString("user_password"));
                     }

                 //5关闭资源
                 rs.close();
                 st.close();
                 conn.close();
             }
}

 

### 关于 Sharding-JDBC面试题目及答案 #### 什么是 Sharding-JDBC? Sharding-JDBC 是一款开源的 Java 库,用于实现分库分表功能。其设计目标是在不改变现有应用程序逻辑的前提下,提供透明化的数据库水平扩展能力[^1]。 ```java // 使用 Sharding-JDBC 进行分片配置的例子 public class DataSourceConfig { @Bean public DataSource dataSource() { // 创建数据源映射 Map<String, DataSource> dataSourceMap = new HashMap<>(); dataSourceMap.put("ds_0", createDataSource("jdbc:mysql://localhost:3306/db_0")); dataSourceMap.put("ds_1", createDataSource("jdbc:mysql://localhost:3306/db_1")); // 定义分片规则 InlineShardingStrategyConfiguration shardingStrategy = new InlineShardingStrategyConfiguration( "order_id", "ds_${order_id % 2}" ); // 构建实际的数据源对象 return ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRule); } } ``` #### Sharding-JDBC 如何处理跨库查询问题? 当涉及到多个物理数据库中的数据联合查询时,Sharding-JDBC 提供了多种解决方案: - **Hint 路由**:允许开发者通过编程方式指定路由信息。 - **SQL 解析优化器**:能够识别并解析 SQL 中涉及的不同表之间的关联关系,并据此调整执行计划。 - **分布式事务支持**:对于需要强一致性保障的应用场景提供了 XA 或者柔性事务的支持机制[^2]。 #### 数据如何按照特定规则分布到不同表格中? 可以通过自定义算法或内置策略来决定每条记录应该存储在哪一个具体的子表内。例如,在订单管理系统里可以根据 `order_id` 字段值来进行奇偶分配,从而达到负载均衡的效果[^3]。 ```sql -- 插入语句会依据 order_id 自动选择合适的 t_order 表 INSERT INTO t_order (id, user_id, status) VALUES (?, ?, ?); -- 查询也会自动定位至相应的分片表 SELECT * FROM t_order WHERE id = ? ``` #### Mycat 和 Sharding-JDBC 主要区别是什么? 两者都是用来解决大规模并发访问下数据库性能瓶颈的有效工具,但是工作原理有所不同: - **架构层面**: Mycat 属于独立部署的服务端组件,位于应用服务器与 MySQL 实例之间作为代理层;而 Sharding-JDBC 则是以 jar 包的形式嵌入到业务代码内部运行环境之中。 - **灵活性方面**: 相较之下,Sharding-JDBC 更加贴近应用程序本身,使得开发人员可以直接利用熟悉的 JDBC API 编写程序,无需额外学习新的接口规范[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值