当前位置: 首页 > 编程日记 > 正文

如何使用jdbc连接数据库

如何使用jdbc连接数据库

数据库是一个有组织的数据集合。数据库管理系统以一种与数据库格式一致的方式,提供了存储和组织数据的机制。数据库管理系统允许在不考虑内部数据表示的情况下访问和存储数据。
java程序使用JDBC API与数据库通信,并用它操纵数据库中的数据。JDBC驱动器实现与某个数据库的接口。这种API与特定驱动器的分离,使开发人员能够改变底层的数据库,而不必修改访问数据库的java代码。现在,大多数流行的数据库管理系统都包含JDBC驱动器,而且还有许多第三方JDBC驱动器。

步骤大致如下

1,将jar包放入你要连接数据库的工程,并配置环境.

这里写图片描述

将jar包复制粘贴到工程下环境目录(如图),点击右键Build Path->add to …即可将jar包导入工程

2.使用Class类的中静态forName()方法获得与字符串对应的Class对象

public class Dbtext {public static void main(String[] args) {try {Class.forName("com.mysql.jdbc.Driver");//这里连接的是mysql型数据库} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}

因为加载”com.mysql.jdbc.Driver”字符串对应的类和接口可能会出现异常,所以加上try{}catch(){}异常处理

3,定义成员变量

    Connection con = null;//定义连接conPreparedStatement ps = null;//定义预声明psResultSet rs = null;//定义结果集rs,用来接收select查询结果

常用声明有statement和PrepareStatement,他们的区别介绍网上随处可见,主要有三种。

(1)作为子类的PrepareStatement比statement有更好的性能

(2)因为不用拼接字符串也提高的代码的可读性.

(3)最主要的是PrepareStatement可以防范简单的sql注入,而statement因为涉及字符串的拼接有吧被注入风险

4,使用驱动管理器进行连接

    try {String url = "jdbc:mysql://主机名:端口名/数据库名";String user = "你的用户名";String password = "密码";con = DriverManager.getConnection(url, user, password);     //使用驱动管理器进行连接String sql = "select * from animals where 产地=?";//写一句简单的sql语句ps = con.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();
}

使用驱动管理器连接需要路径,用户名,密码。如果你在一个工程中反复使用jdbc,还可以将其制作成工具(详见我的博客)。因为连接这一步和下面使用预声明可能会出现异常,所以需要对其加上异常处理。eclipse会在java文件中自动提示,但不会在jsp页面自动提示,如果不加就可能出现500的服务器错误.

5,用预声明执行sql

执行sql主要分两种情况

(1)增加,删除,和修改语句。

这三种语句只会返回更新的条数,不需要接收结果,如果你只使用了这三种语句,可以不用定义结果集

例:

String sql="update food set foName=?,foKind=?,foState=?,foPrice=? where foCode=?";ps=con.prepareStatement(sql);ps.setString(5, Code1);  ps.setString(1, Name1);  ps.setString(2, Kind1);  ps.setString(3, State1);  ps.setString(4, Price1);
ps.executeUpdate();

预声明需要把你想填入的数据先标成“ ?”,等将语句放入声明之后再填入具体数据。之后使用

声明名.executeUpdate()方法进行更新,还可以用一个整形变量接收更新了几条数据。

(2)查询语句。

这种语句需要用结果集进行接收

例:

        String sql = "select * from animals where 产地=?";ps = con.prepareStatement(sql);ps.setString(1,"中国");rs = ps.executeQuery();while (rs.next()) { //rs.next()方法十分重要,不写会出现异常System.out.println(rs.getInt("ID"));System.out.println(rs.getString("名称"));System.out.println(rs.getString("科"));System.out.println(rs.getInt("数量"));System.out.println(rs.getString("产地") + "\n\n");}

查询语句是十分重要的语句,一般用在jsp页面的显示。使用方法是先更新队列,同时用结果集rs接收,然后用rs.next()方法定义指向,每调用一次,指针会指向表中下一个元素。对某个元素的信息,使用.get数据类型()的方法进行接收

6,使用完毕,关闭资源

 finally {try {if (rs != null) {rs.close();}if (ps != null) {ps.close();}if (con != null) {con.close();}}catch (SQLException e) {e.printStackTrace();}}}
}

使用完毕需要关闭依次关闭结果集,预声明,连接,以便下一次的使用。如果没有定义和使用结果集就不需要关闭结果集。

相关文章:

Mysql配置查询

查看mysql数据库的线程数: show global status like Thread%; 如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。Threads_c…

自我暗示的三大规律

伟人之所以伟大,是因为别人放弃时,他却在坚持。理解暗示的三大规律后,你就会清楚地知道,为什么在别人放弃的时候,你仍然要坚持。 自我暗示第一规律:重复 经常重复一种思想会产生信念,进而变得坚…

python爬虫入门urllib库的使用

urllib库的使用,非常简单。 import urllib2response urllib2.urlopen("http://www.baidu.com") print response.read() 只要几句代码就可以把一个网站的源代码下载下来。 官方文档:https://docs.python.org/2/library/urllib2.html urllib2.u…

maven如何在eclipse上加载

maven如何在eclipse上安装和使用 maven是Apache旗下的定级开源工具,在项目管理方面有强大的能力。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建…

初步判断内存泄漏方法

有时候,内存泄漏不明显,或者怀疑系统有内存泄漏,我们可以通过下面介绍的方法初步确认系统是否存在内存泄漏。首先在Java命令行中增加-verbose:gc参数,然后重新启动java进程。当系统运行过程中,JVM进行垃圾回收的时候,会…

com组件和一般dll的区别

这阵子在想一个需要利用com组件的小程序怎么做,突然想起上次去面试的时候考官问过autocad开发时为什么要利用com,而不采用一般的dll呢? 到google上查了一下,许多人也问了一样的问题:) 用com来写程序…

WinCE6.0 修改开机Logo方法集锦(二)

中秋假期已过&#xff0c;回来继续该博文主题。今天讲解第二种方法&#xff0c;将Logo图片的数据写入到Nand Flash中&#xff0c;在启动初始化LCD的时候&#xff0c;从固定的地址将数据读出并填充到显示缓存中。<?xml:namespace prefix o ns "urn:schemas-microsoft…

[动态dp]线段树维护转移矩阵

背景&#xff1a;czy上课讲了新知识&#xff0c;从未见到过&#xff0c;总结一下。 所谓动态dp&#xff0c;是在动态规划的基础上&#xff0c;需要维护一些修改操作的算法。 这类题目分为如下三个步骤&#xff1a;&#xff08;都是对于常系数齐次递推问题&#xff09; 1先不考虑…

原始ajax方式调用asp.net后台方法

aspx页面&#xff1a; <% Page Language"C#" AutoEventWireup"true" CodeFile"Data.aspx.cs" Inherits"Data" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht…

洛谷P4480 【[BJWC2018]餐巾计划问题】

这道题和网络流 \(24\) 题中的餐巾计划的确不一样, \([\) \(BJWC\) \(2018\) \(]\) 餐巾计划问题的数据范围更大。 一个餐厅在相继的 \(n\) 天里&#xff0c;每天需用的餐巾数不尽相同。假设第 \(i\) 天 \((\) \(i\) \(\) \(1\) \(,\) \(2\) \(,\) \(...\) \(,\) \(n\) \()\)需…

灵活使用java反射简化servlet

在我们初学jsp的时候&#xff0c;我们通常将java代码放到jsp页面

第四篇 Gallery控件

直奔主题~&#xff01; 结构如图&#xff1a; main.xml代码: <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical" android:la…

macaca之app-inspector

简单介绍 之前已经将macaca的环境搭建好了&#xff0c;现在就需要进行元素的定位&#xff0c;这里使用app-inspector&#xff0c;然后进行自动化脚本的编写。 实际操作 一、安装app-inspector npm i app-inspector -g 安装成功确保如下命令中有手机或模拟器的连接&#xff0c;可…

visual-reasoning 笔记

目录 整理最近学习 visual-reasoning的笔记 1. 关注 ACL、EMNLP、NAACLI等会议文章 未开始 2. Cyc项目 2.1 cyc知识库介绍&#xff1a; ​ 该知识库包含了320w条人类断言&#xff0c;30w概念&#xff0c;15000谓词。 ​ Cyc知识库中表示的知识一般形如“每棵树都是植物”、“植…

使用beanutil简化request值的接收

在刚开始学习java web的时候&#xff0c;我们想要接收从其他页面传过来的值常使用以下的语句 request.setCharacterEncoding("UTF-8");String Kind1 request.getParameter("foodKind");String Code1 request.getParameter("foodCode");String…

命令行编译运行CSharp文件

命令行编译运行CSharp文件 找到csc.exe所在的路径。如我本机上为“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727”在环境变量里增加变量CSC_HOME&#xff0c;值为以上路径。在PATH变量的值中加入%CSC_HOME%在cmd中进入要编译的cs文件所在的文件夹输入命令csc 文件名&#xf…

大话IT职场之工作和生活的平衡

每一个职场人都有自己的规划&#xff0c;特别是IT人员&#xff0c;基本都在想我要几个月掌握这门技术或语言&#xff0c;我要多久能带团队&#xff0c;我多长时间可以做到管理岗位&#xff0c;技术经理、技术总监等&#xff0c;每个人基本都充斥着这样的想法。但是否同时也在考…

安装和使用git遇到的问题总结

一&#xff0c;centos7下安装(因为centos7下用yum安装git的版本太低了&#xff0c;所以只能下载源代码&#xff0c;然后用源代码安装&#xff09; 下载编译工具 yum -y groupinstall "Development Tools" 下载依赖包 yum -y install zlib-devel perl-ExtUtils-MakeM…

Linux系统文本命令快速登录与退出

Linux是一个多用户的操作系统&#xff0c;用户要使用该系统&#xff0c;首先必须登录系统&#xff0c;使用完系统后&#xff0c;必须退出系统。用户登录系统时&#xff0c;为了使系统能够识别自己&#xff0c;必须输入用户名和密码&#xff0c;经系统验证无误后方能进入系统。在…

调试 后台 ajax post 对应的php的方法

在对应的javascript中 $.post("<?php echo ROOTURL ?>/Service/SetPlayerStartCord.php", "IP192.168.0.32&startCord_X400&startCord_Y30", function(data){!!!alert("Data Loaded: " data); }转载于:https://www.cnblogs.com…

log4j在eclipse上使用简介

Log4j是Apache的一个开源项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件&#xff0c;甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通过定义每…

关于编程的浅学习与深学习

导读&#xff1a;Tanky Woo的程序人生在博客中发表了《关于编程的浅学习与深学习》&#xff0c;文章是关于编程学习的一个提议、归纳、总结。以下是文章全部内容&#xff1a;关于编程的学习&#xff0c;大家肯定都知道&#xff0c;也是大家都说来说去的&#xff0c;就几句话&am…

shiro实战系列(一)之入门实战

一、什么是shiro? Apache Shiro 是一个强大而灵活的开源安全框架&#xff0c;它干净利落地处理身份认证&#xff0c;授权&#xff0c;企业会话管理和加密。 Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的&#xff0c;甚至是痛苦的&#xff0c;但它没有必要…

数据源和连接池

JDBC数据源&#xff1a; Data Source JDBC中提供了javax.sql.DataSource接口&#xff0c;负责建立与数据库的连接 DataSource对象可以由Web服务器提供&#xff0c;前提是需要在服务器配置DataSource&#xff08;包括连接池&#xff09; 连接池&#xff1a;Connection Pool…

FastReport.net 使用 Winform WebForm打印

delphi用的fastreport比较多 所以。net中也研究一下用法,这个打印控件还是很简单的 只要手动设计一下写少许代码就可以打印了 甚至可以写成通用代码 以后就可以不用写代码 安装demo会同时安一个设计器 打开设计器 通过设计器设计模板 新建数据源 新建数据集 查询单表全部内容&…

Ubuntu 12.04安装Sun JDK 6

Ubuntu 12.04安装Sun JDK 6 下载 sun jdk 6 bin. 设置权限 chmod x jdk-6u25-linux-i586.bin 解压文件 ./jdk-6u25-linux-i586.bin 移动位置到 sudo mv jdk1.6.0_25 /usr/lib/jvm/ 设置系统环境 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.…

如果你的云服务商倒闭该怎么办?

如果你的云服务商倒闭或暂时中断服务&#xff0c;以下4个步骤能够帮助你的企业把损失减少到最低。 2009年2月&#xff0c;云服务商Coghead在一封写给客户的电子邮件中宣布该公司"由于受到经济挑战的影响"&#xff0c;将立即终止基于云的开发平台服务。随后&#xff0…

Ubuntu16.04桌面系统如何配置和启动wireshark

上一篇介绍了在Ubuntu系统中安装wireshark 本篇介绍在Ubuntu系统中配置和启动wireshark&#xff1b; 安装好后&#xff0c;直接在终端运行$ wireshark。出于安全方面的考虑&#xff0c;普通用户不能够打开网卡设备进行抓包&#xff0c;Wireshark不建议用户通过sudo在root权限下…

[导入]笔记本”终极“散热方案

笔记本老了&#xff0c;三年了&#xff0c;电池不太行了&#xff0c;散热量也大。解决电池问题首先是能耗的问题&#xff0c;我把能够卸下来的光驱和读卡器都拆了&#xff0c;这下留了一个大长孔&#xff0c;很好的是这样散热问题也得到了解决&#xff0c;光驱的大孔和读卡器那…

Android中Broadcast

前一段时间&#xff0c;听说过android的广播&#xff0c;这段时间经过研究终于可以写出一个Demo 首先新建一个android工程项目 在BroadCastActivity.java中 package com.mypack;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import…