Java Java베이스 Java 프로그램 개발 학습 JDBC 및 MySQL 데이터베이스

Java 프로그램 개발 학습 JDBC 및 MySQL 데이터베이스

Feb 11, 2021 am 10:33 AM
java jdbc MySQL 데이터베이스

Java 프로그램 개발 학습 JDBC 및 MySQL 데이터베이스

관련 학습 권장사항: java 기본

1. 데이터베이스에 대한 JDBC 연결 작업

을 클래스에 캡슐화하여 작성 시 코드를 단순화할 수 있습니다.
(1) JDBC-MySQL 데이터베이스 드라이버 로드

try {
    Class.forName("com.mysql.cj.jdbc.Driver");}catch (Exception e){ }

(2) 데이터베이스에 연결

Connection con = null;//声明要连接数据库的对象comString uri = "jdbc:mysql://localhost:3306/数据库名?useSSL=true &characterEncoding=utf-8";	//连接地址String user = "root";	//连接数据库的用户名String password = "123456";	//连接数据库的密码try {
    con = DriverManager.getConnection(uri,user,password);
	//连接代码}catch(SQLException e){ }

(3) 데이터베이스의 데이터를 연산하는 코드 작성

2. 쿼리 연산

1, 쿼리 작업의 특정 단계
(1) 데이터베이스에 SQL 문 보내기:

Statement sql;try{
    sql = con.createStatement();}catch (SQLException e){ }

먼저 SQL 문 개체를 선언한 다음 생성된 연결 개체가 createStatement()메서드를 호출하도록 합니다. > SQL 문 개체를 생성합니다. createStatement()创建这个SQL语句对象。
(2)处理查询结果
有了SQL语句对象后,这个对象可以调用相应的方法实现对数据库中表的各项操作,其中查询结果存放在一个ResultSet类声明的对象中。即SQL查询语句对数据库的查询操作讲放回一个ResultSet对象,ResultSet由“列”(字段)组织的数据行构成。

rs = sql.executeQuery("select * from 表的名称");//读取表中的所有列,*为通配符rs = sql.executeQuery("select 行1字段名,行2字段名... from 表的名称");//读取表中特定的列

ResultSet对象一次只能看到一行数据,使用next()方法移到下一行。ResultSet对象可以通过getXxx(int columnIndex)获得列值和通过传递列名getXxx(String columnName)获得列值。
(3)关闭连接

con.close(); //关闭con所连接的数据库

注意:数据库与连接对象紧密绑定,应在使用完数据库再进行关闭操作。

2,控制游标
结果集的游标的初始位置在结果集第一行的前面,结果集调用next()方法向下(后)移动游标,移动成功返回true,移动失败返回false。如果要在结果集中移动并显示若干条记录,必须返回一个滚动的结果集。方法如下:

Statement stmt = con.createStatement(int type,int concurrency);//获得一个Statement对象,根据参数的值,stmt返回相应类型的结果集:ResultSet re = stmt.executeQuery(SQL语句);type的取值:决定滚动方式:
ResultSet.TYPE_FORWARD_ONLY 结果集的游标只能向下滚动
ResultSet.TYPE_SCROLL_INSENSITIVE 游标可以上下移动,数据库变化时,结果集不变
ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,数据变化时,结果集同步改变
Concurrency取值:决定是否可以用结果集更新数据库
ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表
ResultSet.CONCUR_UPDATABLE 能用结果集更新数据库中的表

滚动查询常用的ResultSet的方法:public boolean previous() 将游标向上移动,当移动到结果集第一行之前时返回falsepublic void beforeFirst() 将游标移动到结果集的初始位置,第一行之前public void afterLast() 将游标移动到结果集的最后一行之后public void first() 将游标移动到第一行public void last() 将游标移动到最后一行public boolean isAfterLast() 判断游标是否在最后一行之后public boolean isBeforeFirst() 判断游标是否在第一行游标之前public boolean isFirst() 判断游标是否指向第一行public boolean isLast() 判断游标是否指向最后一行public int getRow() 得到当前游标所指向的行号,行号从1开始,如果结果集没有行,返回0public boolean absolute(int row) 将游标移动到参数row指定的行(参数取负数即倒数)

(3)条件与排序查询
where子语句:select 字段 from 表明 where 条件

(1)字段值与固定值比较
select * from table where name='张三'(2)字段值在某个区间
select * from table where number>5 and number<10 and name!=&#39;李四&#39;(3)使用某些特殊的日期函数(Data:year-month-day)select * from table where year(表明日期的字段名)<1980 and month(表面日期的字段名)<=10select * from table where year(表明日期的字段名) between 2002 and 2021(4)使用某些特殊的时间函数(hour,minute,second)
select * from timelist where second(表明时间的字段名)=36(5)用操作符like进行模式匹配,使用%代替0个或多个字符,用一个下划线_代替一个字符。
select * from table where name like&#39;%欧%&#39; //查询name字段有“欧”字的记录

order by语句:可结合where语句使用

select * from table order by height
select * from table where name like &#39;%王%&#39; order by name

三、更新、添加和删除操作

Statement对象调用public int executeUpdate(String sqlStatement);通过参数指定的方式对数据库表中的记录的更新、添加和删除操作。

(1)更新
update 表名 set 字段 = 新值 where <条件子句>(2)添加
insert into 表 values (对应具体的记录)(3)删除
delete from 表名 where <条件子句>

四、使用预处理语句

Java提供了更高效的数据库操作机制,就是PreparedStatement对象,即预处理语句对象。将SQL语句处理为数据库底层语句,再传输给数据库。
使用通配符:对SQL进行预处理时,可以用 通配符? 来代替字段的值,只要在预处理语句执行之前再设置通配符所代表的具体值即可:

String str = "select * from 表名 where 字段1 < ? and 字段2 = ?";PreparedStatement sql = con.prepareStatement(str);sql.setXxx(int parameterIndex,Type x);//该方法设置?代表的值,parameterIndex代表第几个?,x代表要替换的值。

五、通用查询

编写通用查询类,用户可以将数据库名、SQL语句传递给该类的对象,那么该对象就用一个二维数组返回查询的记录。
编写通用查询类需要知道数据库表列(字段)的名字和数量。常用方法为用结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象:

ResultSetMetaData metaData = rs.getMetaData();

然后该对象metaData调用getColumnCount()方法既可以返回rs中列的数目,调用getColumnName(int i) (2) 쿼리 결과 처리

SQL 문 개체를 사용하면 이 개체는 해당 메서드를 호출하여 데이터베이스의 테이블에 대한 다양한 작업을 구현할 수 있으며, 쿼리 결과는 ResultSet 클래스에서 선언한 개체에 저장됩니다. 즉, SQL 쿼리 문은 데이터베이스 쿼리 작업에 ResultSet 개체를 반환합니다. ResultSet은 "열"(필드)로 구성된 데이터 행으로 구성됩니다.

con.setAutoCommit(false);
ResultSet 개체는 한 번에 한 행의 데이터만 볼 수 있습니다. next() 메서드를 사용하여 다음 행으로 이동하세요. ResultSet 객체는 getXxx(int ​​​​columnIndex)를 통해 열 값을 얻을 수 있고, 열 이름 getXxx(String columnName)을 전달하여 열 값을 얻을 수 있습니다. (3) 연결 닫기
con.commit();

참고: 데이터베이스는 연결 개체에 밀접하게 바인딩되어 있으므로 사용 후에는 데이터베이스를 닫아야 합니다.
2, 커서 제어

결과 집합에서 커서의 초기 위치는 결과 집합의 첫 번째 행 앞입니다. 결과 집합은 커서를 아래쪽(뒤로)으로 이동하기 위해 next() 메서드를 호출합니다. 이동이 성공하면 True가 반환되고, 이동이 실패하면 False가 반환됩니다. 결과 집합에서 여러 레코드를 이동하여 표시하려면 스크롤 결과 집합을 반환해야 합니다. 방법은 다음과 같습니다:

con.rollback();

(3) 조건 및 정렬 쿼리


where sub-statement: select field from where 조건을 나타냅니다.

rrreee

order by 문: 다음과 조합하여 사용할 수 있습니다. where 문
rrreee

three , 업데이트, 추가 및 삭제 작업

Statement 개체는 public int excuteUpdate(String sqlStatement);를 호출하여 매개변수를 지정하여 데이터베이스 테이블의 레코드를 업데이트, 추가 및 삭제합니다. rrreee4. 준비된 문 사용

Java는 보다 효율적인 데이터베이스 작업 메커니즘을 제공하는데, 이는 준비된 문 개체인 ReadyStatement 개체입니다. SQL 문을 데이터베이스의 기본 문으로 처리한 다음 데이터베이스로 전송합니다. 🎜 와일드카드 사용: SQL을 전처리할 때 와일드카드 문자 ?를 사용하여 필드 값을 바꿀 수 있습니다. 전처리 문을 실행하기 전에 와일드카드 문자로 표시되는 특정 값을 설정하면 됩니다. 🎜rrreee🎜🎜 5. 일반 쿼리 🎜🎜🎜 작성 시 일반 쿼리 클래스인 경우 사용자는 데이터베이스 이름과 SQL 문을 이 클래스의 개체에 전달할 수 있으며, 그러면 개체는 2차원 배열을 사용하여 쿼리 레코드를 반환합니다. 🎜 일반 쿼리 클래스를 작성하려면 데이터베이스 테이블 열(필드)의 이름과 개수를 알아야 합니다. 일반적인 방법은 ResultSet 개체 rs를 사용하여 getMetaData() 메서드를 호출하여 ResultSetMetaData 개체를 반환하는 것입니다. 🎜rrreee🎜 그런 다음 getColumnCount( ) 메서드를 사용하여 getColumnName(int i)를 호출하면 결과 집합 rs에서 i번째 열의 이름을 반환할 수 있습니다. 🎜🎜🎜 6. 트랜잭션 🎜🎜🎜🎜1. 트랜잭션 및 처리 🎜🎜 트랜잭션은 일련의 SQL 문으로 구성됩니다. 소위 트랜잭션 처리란 애플리케이션 프로그램이 트랜잭션의 모든 SQL 문이 실행되거나 그 중 아무것도 실행되지 않도록 보장하는 것을 의미합니다. 트랜잭션 처리는 데이터베이스 내 데이터의 무결성과 일관성을 보장하는 중요한 메커니즘입니다. 🎜🎜🎜2, JDBC 트랜잭션 처리🎜🎜 자동 모드를 끄려면 setAutoCommit(boolean b) 메서드를 사용하세요. 🎜 즉, 두 가지 관련 작업이 SQL 문의 데이터를 변경해서는 안 됩니다. 둘 다 실행될 때까지 데이터베이스. 방법은 sql 개체를 얻기 전에 연결 개체가 이 메서드를 호출하도록 하는 것입니다. 🎜rrreee🎜 commit() 메서드를 사용하여 트랜잭션을 처리합니다. 🎜 자동 모드를 끈 후 sql 개체가 여러 SQL(즉, 동일한 transaction) 문에 따르면 이 문은 즉시 적용되지 않지만 연결 개체가 메서드를 호출할 때까지는 적용되지 않습니다. 🎜rrreee🎜 트랜잭션을 처리하기 위해 Rollback() 메서드를 사용하지 못한 경우: 🎜 즉, 트랜잭션에 의해 수행되는 작업입니다. con이 트랜잭션 처리를 위해 commit() 메서드를 호출할 때 하나의 SQL 문이 성공적으로 실행되지 않는 한 트랜잭션 실행이 실패하고 SQLException이 발생합니다. 이때 con은 데이터 변경을 일으키는 모든 작업을 실행 취소하기 위해 rollback() 메서드를 호출해야 합니다: 🎜rrreee🎜🎜🎜관련 무료 학습 권장 사항: 🎜🎜🎜mysql 비디오 튜토리얼🎜🎜🎜🎜

위 내용은 Java 프로그램 개발 학습 JDBC 및 MySQL 데이터베이스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Edge PDF 뷰어가 작동하지 않습니다 Edge PDF 뷰어가 작동하지 않습니다 Aug 07, 2025 pm 04:36 PM

TestHepdFinanotherAppTodeMineifTheissueiswithTheFileoredge.2

Java에서 간단한 TCP 클라이언트를 구현하는 방법은 무엇입니까? Java에서 간단한 TCP 클라이언트를 구현하는 방법은 무엇입니까? Aug 08, 2025 pm 03:56 PM

importjava.ioandjava.net.socketfori/oandsocketcommunication.2.createOcketObjectToConnectToThEserUsingHostNameAndport.3.usepritWriterTerndAviaOutputStreamandBufferEdERDERDERDEREADSERVERRSPONSSFROMINPUTSTREAM.4.USTERTRETOR-resto-restocoUtomati

Docker와 함께 Kubernetes에 Java 응용 프로그램을 배포합니다 Docker와 함께 Kubernetes에 Java 응용 프로그램을 배포합니다 Aug 08, 2025 pm 02:45 PM

컨테이너화 된 Java 응용 프로그램 : Dockerfile 생성, Eclipse-Temurin : 17-Jre-Alpine과 같은 기본 이미지를 사용하고 JAR 파일을 복사하고 시작 명령을 정의하고 DockerBuild를 통해 이미지를 빌드하고 Dockerrun과 함께 로컬로 실행하십시오. 2. 이미지를 컨테이너 레지스트리로 푸시하십시오. Dockertag를 사용하여 이미지를 표시하고 DockerHub 및 기타 레지스트리로 푸시하십시오. 먼저 dockerlogin에 로그인해야합니다. 3. Kubernetes에 배포 : 쓰기 배포 .yaml 배포를 정의하려면 복제본, 컨테이너 이미지 및 리소스 제한 수를 설정하고 Service.yaml을 작성하여 작성하십시오.

Explorer 패널에 중점을 둔 코드 바로 가기 Explorer 패널에 중점을 둔 코드 바로 가기 Aug 08, 2025 am 04:00 AM

VSCODE에서는 바로 가기 키를 통해 패널과 편집 영역을 빠르게 전환 할 수 있습니다. 왼쪽 탐색기 패널로 이동하려면 Ctrl Shift E (Windows/Linux) 또는 CMD Shift E (Mac)를 사용하십시오. ctrl` 또는 esc 또는 ctrl 1 ~ 9를 사용하려면 편집 영역으로 돌아갑니다. 마우스 작동과 비교할 때 키보드 단축키는 더 효율적이며 인코딩 리듬을 방해하지 않습니다. 다른 팁으로는 다음과 같습니다.

수정 : Windows 업데이트가 설치되지 않았습니다 수정 : Windows 업데이트가 설치되지 않았습니다 Aug 08, 2025 pm 04:16 PM

runthewindowsupdateTrouBleShootErviaSettings> 업데이트 및 보안> 문제 해결을 해소 적으로 문제를 해결합니다 .2

Java 객체의 직렬화 과정은 무엇입니까? Java 객체의 직렬화 과정은 무엇입니까? Aug 08, 2025 pm 04:03 PM

JavaserializationConvertsanObject'sstateIntoAbytestreamforStorageOrtransmission, anddeserialization은 ThatStream.1. toenableserialization, aclassmustimplementtheserializableinterface.2.useObjectOutoutPutStreamToseAnobject, Savin

Java에서 while 루프를 사용하는 방법 Java에서 while 루프를 사용하는 방법 Aug 08, 2025 pm 04:04 PM

awhileloopinjavarepeatexecutescodeaslongasTheconditionistrue; 2. initializeacontrolvariablebarevereTeloop; 3. definephonditionusingabooleanexpression; 4.updateContrecontrolibarialinInsidethelooptopreventinfiniteLooping; 5.Useexamplass

Python Numpy Linear Algebra 예제 Python Numpy Linear Algebra 예제 Aug 07, 2025 pm 04:52 PM

Numpy는 Python의 과학 컴퓨팅을위한 핵심 라이브러리입니다. 선형 대수 작업을 처리하는 데 능숙하며 Numpy.linalg 모듈에서 효율적인 NDARRAY 어레이 및 기능을 제공합니다. 1. np.linalg.solve (a, b)를 사용하여 선형 방정식 시스템 ax = b를 해결하여 용액 벡터 x를 얻습니다. 2. 매트릭스 전위는 A.T를 통해 구현된다; 3. 매트릭스 곱셈은 np.dot (a, b) 또는@b에 사용될 수 있습니다. 4. 매트릭스 역 역수는 np.linalg.inv (a)에 의해 계산되며 행렬은 가역적이어야합니다. 5. 결정 요인은 np.linalg.det (a)에 의해 주어진다. 6. 고유 값과 고유 벡터는 np.linalg.eig (a)를 통해 얻어지고 고유 벡터가 정규화되었습니다.

See all articles