java利用jdbc连接近远程MySQL数据库详细步骤+数据库封装类 --菜鸟小回

java利用jdbc连接近程MySQL数据库详细步骤+数据库封装类


ChatGPT点击直接对话:小回公益GPT

文章目录

  • java利用jdbc连接近程MySQL数据库详细步骤+数据库封装类
    • ChatGPT点击直接对话:[小回公益GPT](https://gpt.huijia.cf/)
    • 一、导入驱动包
    • 二、连接数据库
      • 1. 加载四大件之一 驱动(新版jdk可忽略)
      • 2. 连接到数据库,三大件URL,USER,PASSWORD
      • 3. 定义执行的SQL语句
      • 4. 通过连接对象创建执行的SQL语句的工具(载体)
      • 5.操作SQL语句,返回修改记录条数:
      • 6.断开连接:
    • 三、利用PreparedStatement操作数据库(防止sql注入!)
    • 四、封装sql连接库

驱动包

注:未安装mysql或环境未配置好请移步(确保dos状态连接数据库成功后再查看此教程!):

MySQL免安装版配置+dos基础命令创建MySQL+Navicat编辑器破解

一、导入驱动包

  1. 导入connector驱动包:项目下新建“libs”文件夹,复制下载好的connector包到libs文件夹下。
    enter description here

enter description here

  • 此处也可以使用外链形式直接导入,但导入后不可更改包位置:
    enter description here
  1. 建立路径:
    enter description here
  • 建立成功:
    enter description here

二、连接数据库

1. 加载四大件之一 驱动(新版jdk可忽略)

Class.forName("com.mysql.cj.jdbc.Driver");
此处地址获取如图位置:
enter description here+ 右键点击Driver
enter description here

2. 连接到数据库,三大件URL,USER,PASSWORD

URL:jdbc:mysql://ip:端口号/数据库名?时区(serverTimezone=Asia/Shanghai)
User:root
password:root

  • 方式一:本地数据库连接直接使用localhost作为ip

    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=Asia/Shanghai", "root", "521521");    
    
  • 方式二:利用ip远程操纵数据库,连接其他电脑需要ip,user,password,所连电脑关闭防火墙。

    1. 查询本地ip地址
      win+r 输入cmd打开dos界面输入ipconfig即可查询
      enter description here
    2. 找到数据库如图位置mysql->表->user按图中更改,保存
      enter description here
      enter description here
    3. 新建查询输入flush privileges刷新数据库
    4. 进入程序页面将本地连接localhost更换为1中查到的ip:
      Connection conn2=DriverManager.getConnection(“jdbc:mysql://192.168.5.211:3306/test3?serverTimezone=Asia/Shanghai”, “root”, “521521”);
  • 测试连接是否成功:
    System.out.println(conn2.isClosed()==false? "连接成功":"连接失败");

3. 定义执行的SQL语句

String sql2="delete from student where sname='回'";	
//基本增删改查语句
/*			String sql="insert into student values('1','回','男','1997-04-22','950')";		//增String sql1="update student set sname='回' where sno='950'";						//改String sql2="delete from student where sname='嘿嘿'";								//删String sql3="select * from student";											//查
*/

4. 通过连接对象创建执行的SQL语句的工具(载体)

Statement st=conn2.createStatement();

5.操作SQL语句,返回修改记录条数:

int i=st.executeUpdate(sql2);
System.out.println(i);
//查询需要使用ResultSet 接收返回结果集
/*ResultSet rs=st.executeQuery(sql3);while(rs.next()){String sno=rs.getString(1);String sname=rs.getString(2);String ssex=rs.getString(3);Date sbirthday=rs.getDate(4);String sclass=rs.getString(5);System.out.println(sno+"\t"+sname+"\t"+ssex+"\t"+sbirthday+"\t"+sclass);}
*/

6.断开连接:

   //	rs.close();st.close();conn2.close();

数据库连接完成!常用sql查询语句移步
常用查询语句


三、利用PreparedStatement操作数据库(防止sql注入!)

package com.zhiyou.jdbcTest;import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;public class PreperTest {public static void main(String[] args) {try {Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=Asia/Shanghai", "root", "521521");String sql="insert into student values(?,?,?,?,?)"; //?占位PreparedStatement ps=conn.prepareStatement(sql);ps.setString(1, "20");  //向所占位置添加数据ps.setString(2, "哈哈哈");ps.setString(3, "男");//输入时间格式3种://1.可获取时分秒Timestamp ts=new Timestamp(new java.util.Date().getTime());ps.setObject(4, ts);//2.直接输入,必须用-连接//ps.setDate(4,Date.valueOf("2019-04-22"));//3.字符串类型输入//ps.setString(4, "2019.04.22");ps.setString(5, "95320");int i=ps.executeUpdate(); //返回修改记录条数System.out.println(i);ps.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}
}

四、封装sql连接库

package com.zhiyou.jdbcTest;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class MysqlTool {//定义数据库参数private static String URL="jdbc:mysql://localhost:3306/test3?serverTimezone=Asia/Shanghai";private static String USER="root";private static String PASSWORD="521521";//创建连接对象,载体,结果集对象private static Connection conn=null;private static PreparedStatement ps=null;private static ResultSet rs=null;//创建连接对象,可以直接在实例化前加载,使用静态方法static{try {conn=DriverManager.getConnection(URL, USER, PASSWORD);System.out.println(conn.isClosed()==false? "数据库连接成功...":"数据库连接失败...");} catch (SQLException e) {e.printStackTrace();}}/*** 增删改方法update* @param sql 需要执行的sql语句* @param objects	封装了数据的数组,需要和sql语句中的占位符一一对应* @return 返回影响条数,反之为0*/public  int update(String sql,Object[] objects){int a=0;try {//创建sql载体ps=conn.prepareStatement(sql);//给占位符赋值for(int i=0;i<objects.length;i++){ps.setObject(i+1, objects[i]);}//操作SQL语句a=ps.executeUpdate(); } catch (SQLException e) {e.printStackTrace();}return a;}/*** * @param sql 需要执行的sql语句* @param objects	封装了数据的数组,需要和sql语句中的占位符一一对应* @return 封装了数据的结果集,失败返回null*/public ResultSet query(String sql,Object[] objects){try {ps=conn.prepareStatement(sql);//给占位符赋值for(int i=0;i<objects.length;i++){ps.setObject(i+1, objects[i]);}rs=ps.executeQuery();} catch (SQLException e) {e.printStackTrace();}return rs;}public  void close(){	//关闭数据库try {if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(conn!=null){conn.close();System.out.println("数据库已关闭....");}} catch (SQLException e) {e.printStackTrace();}}}
  • 测试
package com.zhiyou.jdbcTest;import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;public class MysqlTest {public static void main(String[] args) {MysqlTool mt=new MysqlTool();String sql="insert into student values(?,?,?,?,?)";Object[] objects={"2","嘿嘿","男","1995.02.03","5645"};/*String sql1="update student set sname='hhh' where sno=?";String sql3 = "delete from student where sno=?";Object[] objects1={2};*/int i=mt.update(sql, objects);System.out.println("成功操作"+i+"条数据...");String sql4="select * from student LIMIT 1,2";Object[] objects2={};ResultSet rs=mt.query(sql4, objects2);try {while(rs.next()){Date date = rs.getDate("sbirthday");int sid = rs.getInt("sno");String sname = rs.getString("sname");System.out.println(sid+"\t"+sname+"\t"+date);}} catch (SQLException e) {e.printStackTrace();}mt.close();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54798.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内信息安全行业常见法律法规介绍及个人理解

国内信息安全行业常见法律法规介绍及个人理解 前言网络安全法等保分保数据安全法 前言 法律法规&#xff0c;尤其是上位法(相对)是咬文嚼字、晦涩难懂的&#xff0c;常常阅读过后无法得到清晰、明确的理解。 但作为IT从业人员&#xff0c;无论是乙方争取项目机会、实施或设计过…

语音识别综述

语音识别的基本单位 Phoneme&#xff1a; 音位&#xff0c;音素 a unit of sound 是声音的最基本单位**&#xff0c;每个词语token的声音由多个 phoneme 组成** Grapheme&#xff08;字位&#xff09; smallest unot of a writing system 每个单词书写最基本的单位&#xff…

语音信号处理常用语料库下载地址

Noise92噪声库 Noise92是一个噪声的语料库&#xff0c;包括一些语音增强中常用到的噪声&#xff0c;每个文件持续235秒&#xff0c;其中噪声的采样率均为19.98KHz&#xff0c;可以通过下采样得到想要采样频率的噪声&#xff0c;上面的文件都是.mat格式&#xff0c;可以利用MAT…

语音信号处理的过程及其应用

一、语音信号处理的过程 在信号处理领域&#xff0c;信息加工和处理的一般流程下图所示。 在语音信号的具体情况下&#xff0c;信息源就是说话的人&#xff0c;通过观察和测量得到的就是语音的波形。信号处理包括以下几个内容&#xff0c;首先根据一个给定的模型得到这一信号的…

语音质量评估 Speech quality assessment 方法与代码编写

目前常用语音相对评估指标&#xff08;参考&#xff09;4个&#xff0c;绝对评估&#xff08;无参考&#xff09;指标3个。简述如下所示&#xff1a;** 相对指标&#xff1a; 1、pesq&#xff1a;共综合以下5个方面打分&#xff0c;分别为音频清晰度、音量、背景噪音音频中的可…

网页js版音频数字信号处理:H5录音+特定频率信号的特征分析和识别提取

文章目录 一、网页中的音频数据源二、FFT&#xff1a;时域转频域三、信号的特征分析四、信号的识别提取附录 音频数字信号处理 Audio DSP (Digital Signal Processing) 是一个复杂又专业的话题&#xff0c;本文介绍的是如何从音频中实时分析和识别出特定频率信号的一种方法&…

telegram设置中文

浏览器打开 https://t.me/setlanguage/classic-zh-cn&#xff0c;只要安装了tg&#xff0c;会自动打开tg&#xff0c;提示切换至中文

谷歌浏览器chrome 语言设置为英文

1.打开Chrome浏览器主界面&#xff0c;看到右上角的【三个点】一样的标志&#xff0c;鼠标左键单击&#xff0c;选择【设置】 2.打开【设置】之后&#xff0c;下拉到最底部看到【高级】两个字&#xff0c;我们鼠标点击一下打开它 3.打开【高级设置】之后我们继续往下拉&#xf…

Chrome浏览器 F12控制台中文改成英文

当Chrome浏览器 F12控制台是中文&#xff0c;怎么设置成英文&#xff1f; 第一步&#xff1a;点击控制台右上角的设置图标 第二步&#xff1a;“语言”选项从浏览器界面语言设置成英文 第三步&#xff1a;重新加载DevTools&#xff0c;控制台变成英文了

谷歌浏览器设置中文教程

谷歌浏览器是由谷歌公司推出的一款网页浏览器&#xff0c;稳定性强&#xff0c;运行速度快&#xff0c;唯一不足的应该就是它不是中文的&#xff0c;那要如何给谷歌浏览器设置中文&#xff1f;下面就一起来看看具体的设置方法吧。 谷歌浏览器怎么设置中文&#xff1f; 1、进入浏…

【爬虫】爬取百度图片加载不出来

图片加载不出来&#xff1f;&#xff08;防盗链&#xff09; 在img标签禁用referer 博客 https://blog.csdn.net/fRF0lw4/article/details/80105574 防盗链解决方案 https://www.cnblogs.com/lydiawork/p/7838153.html 防盗链原理

chatgpt赋能python:Python爬虫网页超链接的SEO实践指南

Python爬虫网页超链接的SEO实践指南 随着互联网的普及&#xff0c;新的网站层出不穷&#xff0c;各种搜索引擎如Google、百度也不断更新搜索算法&#xff0c;以提供更优质的搜索结果。在这个过程中&#xff0c;SEO技术成为网站推广优化的重要手段之一。Python爬虫作为一种常用…

ChatGPT和GPT-4胜出基于四个方面

作为一项人工智能技术&#xff0c;ChatGPT正在以飞快的速度向前发展&#xff0c;其强大的学习能力甚至可以用超乎想象来形容。 最近&#xff0c;OpenAI公司又带着最新的GPT-4开始“大杀四方”了~OpenAI推出GPT-4文本生成AI系统。 那么作为目前NLP领域最前沿的研究成果之一&…

为什么当时那么多大佬不投资阿里?雷军:马云把项目说得太大,像个骗子!

现在我们也可以看出来互联网行业的发展可以说是很热门了&#xff0c;并且还很多发展的潜力。那么也就向我们表明了多年以前马云关于互联网的判断是正确的。不管是现在马云的电子商务还是移动支付等等一系列的互联网产品都充分地向我们证明了阿里巴巴的发展方向是正确的。 然而我…

马云、马化腾各自性格决定投资方式,你更看好谁?

作者&#xff1a;大宝 编辑&#xff1a;竹一 图片&#xff1a;网络 官网&#xff1a;iterduo.com “未来世界即将迎来‘OMO’&#xff08;Online-Merge-Offline线上与线下融合&#xff09;的时代&#xff0c;而中国的发展速度相当惊人&#xff0c;将有望在全球范围内首先实现OM…

马云、马化腾要合作了?阿里传出新消息,或将支持微信支付

马云与马化腾&#xff0c;阿里与腾讯 马云和马化腾是国内互联网界影响力最大的两位知名人物&#xff0c;他们分别是阿里巴巴和腾讯的创始人&#xff0c;在某种意义上改变了无数国人的日常生活。虽然平时大家都喜欢把马云和马化腾并称为“二马”&#xff0c;对他们的各种事迹也…

支付宝要融资上市,马云大赚,不过他承诺捐了

作者&#xff5c;科科 出品&#xff5c;网易科技《态℃》栏目组 七夕节临近下班时间&#xff0c;蚂蚁集团来了个突然袭击&#xff0c;公开了备受瞩目的招股书。这是蚂蚁首次全面披露业务大盘、营收情况等核心数据及未来规划。 营收方面&#xff0c;蚂蚁在2017年-2019年&#xf…

马云不再是蚂蚁集团实控人

2023年1月8日&#xff0c;阿里巴巴集团控股有限公司发布《自愿公告》。 阿里巴巴的非并表关联方蚂蚁集团 2023 年 1 月 7 日宣布&#xff0c;蚂蚁集团的两个主要股东&#xff08;合计持有蚂蚁集团超过 50% 的股权和投票权&#xff09;的投票结构将会发生变化。在各方经济利益不…

搞定马云马化腾争执的IT界大佬---吴鹰

链接&#xff1a;搞定马云马化腾争执的IT界大佬&#xff0c;因为一两亿的事情报警了&#xff01; (baidu.com) 因为这个没完成的一两亿对赌业绩&#xff0c;互相打官司无果后&#xff0c;中嘉博创直接报警说对方涉嫌挪用公司资金。至于吴鹰为啥没调停这个事&#xff0c;不太好…

市值登顶亚洲后,马云对话全球投资者:与未来相比阿里还是个baby

“过去影响世界的很多是欧美公司&#xff0c;我们希望阿里成为真正的世界前十大公司&#xff0c;可以作为中国公司的代表去影响世界。”6月9日&#xff0c;阿里巴巴投资者日大会&#xff0c;阿里巴巴集团董事局主席马云对全球超过350位顶级投资机构的投资人和分析师分享了他的思…