问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JDBC的问题 急!!!

发布网友 发布时间:2022-05-01 02:42

我来回答

4个回答

懂视网 时间:2022-05-01 07:04

在写这个程序之前需要创建一个java工程,这是前提

接着加入mysql的驱动包,我用的数据库是5.1版本的,所以驱动包也是5.1版本的,jdk是1.7

创建数据库位mybatis,表名位user


package com.mybatis.jdbc;

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

/**
 * JDBC操作数据库
 * @author Administrator
 *
 */
public class JDBCTest {

	public static void main(String[] args) {
		
		//数据库链接
		Connection connection=null;
		//预编译的Statement,可以提高数据库性能
		PreparedStatement preparedStatement=null;
		//结果集
		ResultSet resultSet=null;
		try {
			//加载数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			
			//通过驱动管理类来获取数据库链接
			connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "123456");
			//定义sql语句,?表示占位符
			String sql="select * from user where id=?";
			//获取预处理的statement
			preparedStatement=connection.prepareStatement(sql);
			//设置sql参数,第一个参数是sql中的参数的序号(从1开始),第人体各参数是设置的值
			preparedStatement.setInt(1, 1);
			//向数据库发出sql请求,查询结果集
			resultSet=preparedStatement.executeQuery();
			//遍历查询结果集
			while (resultSet.next()) {
				System.out.println(resultSet.getString(2));
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				//关闭连接
				resultSet.close();
				preparedStatement.close();
				connection.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
			
		}
		
		
	}
}


根据以上编码步骤,我们得到以下结论:

1、  加载数据库驱动

2、  创建并获取数据库链接

3、  创建jdbcstatement对象

4、  设置sql语句

5、  设置sql语句中的参数(使用preparedStatement)

6、  通过statement执行sql并获取结果

7、  对sql执行结果进行解析处理

8、  释放资源(resultSet、preparedstatement、connection)


以上是一个简单的用jdbc操作数据库的例子,那么来简单的说下这样操作数据库会有一些怎样的问题。

1、数据库连接,使用时就创建,不适用就释放,对数据库进行频繁的开启和关闭操作,这是种资源的浪费,影响数据库性能。

设想:使用数据库连接池管理数据库连接。

2、将sql语句硬编码到Java代码中,如果sql语句修改,需要重新编译Java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,也不需要对java代码进行修改重新编译。

3、向preparedStatement中设置参数,对占位符位置参数值,硬编码在java中,不利于系统维护。

设想:将sql语句及占位符和参数全部配置在xml中。

4、从resultSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

设想:将结果集映射成java对象。

对原生态jdbc(单独使用jdbc开发)问题总结

标签:

热心网友 时间:2022-05-01 04:12

不行,要装2005的驱动。
其实 我们再开发的时候 如果用sqlserver的 数据库
我们一般不会用微软给的驱动,因为微软的驱动,不支持数据库“二次查询”,我们不会用 jtds 开源数据库驱动
下面是他的 下载网站
http://jtds.sourceforge.net/
下载地址:
http://sourceforge.net/project/showfiles.php?group_id=33291

微软团队 其实也发布了SQL SERVER 2005 的jdbc驱动:
在这个新版本里,开发团队对通信层进行了改善,提高了性能和内存使用。另外还提供了SQL server的SSL加密支持。
驱动下载地址是:
http://www.microsoft.com/downloads/details.aspx?FamilyId=C47053EB-3B64-4794-950D-81E1EC91C1BA&displaylang=en

恩 希望我的回复 能对你有帮助!:-)

热心网友 时间:2022-05-01 05:30

应该不行吧,2005 要安装另外的驱动

热心网友 时间:2022-05-01 07:04

不行 你就给换成2000被 ···又不难下 2005用起来会有很多不爽的地方的··以后麻烦多了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 阿道夫护发乳液到底是洗发水还是护发素 有哪些二次元相关爱好是很烧钱的? 早期动漫,像美少女战士这种能买到相关手办吗? 阿道夫洗发香乳是洗发水吗?还是护发素什么的 关于手办的问题,我在淘宝上看天使立华奏再版的手办,鹤屋通贩650,手办童萌会409,搞不懂为什么差 北京哪里有marvel漫威的专卖店啊 洗发乳液是洗发水?还是护发素 甲和乙两人一起买了一个漫威手办,两人还剩30元,如果单独买,甲差27元乙差30元, 北京市哪里有marvel漫威的专卖店呀,想买一些漫威系列的人物模型,但真的是苦于找不到地方,(不要 鼓浪屿有没有卖漫威手办的? 你见过最特别的快递是什么样的? 《我的漫威手办活了》txt下载在线阅读全文,求百度网盘云资源 《我在漫威卖电影》txt下载在线阅读全文,求百度网盘云资源 lol大提魔节 礼包皮肤价格有人知道吗 2015年英雄联盟的无头骑士赫卡里姆皮肤万圣节那天有卖吗 英雄联盟战争之影各皮肤多少钱 女校长 菲奥娜,无头骑士 赫卡里姆,鬼影森森 茂凯,地底世界 催斯特,海贼 瑞兹大概多少钱 lol零号骑兵赫卡里姆皮肤多少钱 人马新皮肤 无头骑士 赫卡里姆现在值多少 LOL人马限定皮肤电玩战魂赫卡里姆多少钱 梦见死去的妈还活着,又重复着生病快死,是咋回事? 形成动作技能需要经历哪些阶段 我想详细了些有关戏剧文学的知识,可以吗 如何幼儿园户外体育环境的创设的目标 日本kiss me 眉笔多少钱 梦见去世的母亲病重 3.如何在“亲自然”理念下创设我园主题游戏区域? 迪奥眉笔和kissme眉笔哪个好用 梦见死去的妈妈还活着生病我抱着妈妈很着急后妈妈又在我杯里死了 Kissme这是什么意思? 招商银行协商还款例子? 快手里别人的私信都能册除掉可是有一个人私信册除不掉,怎么了 微信加好友等待验证是不是百分百保证对方已经收到好友请求 没有办法处理掉通信录里的等待添加友,那就把微信卸载了吗。然后从新申请一个 jdbc 执行效率问题 微信加好友显示等待验证,那他还在用这个微信的,是吗? 微信对方申请加我好友,我选添加,但是我这里显示等待接受,这是什么情况? 微信添加联系人怎么等待对方确认好久都没确认 刚打开手机就看到微信提示有人加我好友 但是等我打开微信却找不到她 soul发视频为什么显示合成失败