java连接数据库增删改查(在eclipse下 怎样使用java.jsp连接数据库,实现数据库的增删改查)

2025-06-08 15:00:01 :0

java连接数据库增删改查(在eclipse下 怎样使用java.jsp连接数据库,实现数据库的增删改查)

本篇文章给大家谈谈java连接数据库增删改查,以及在eclipse下 怎样使用java.jsp连接数据库,实现数据库的增删改查对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

在eclipse下 怎样使用java.jsp连接数据库,实现数据库的增删改查

新建一个.jsp页面,然后清空,里面写
《%
链接数据库的代码
%》
在工程里调用这个页面就行了

java web 中连接数据库并在HTML上进行增删改查

ODBC 连接数据库也不分J2EE ,JSEE啊?????
无论是J2EE还是JSEE都可以用ODBC连接数据库啊。
区别是有的,
J2EE是做Web程序的,他面对的是大量的用户同时访问服务器而且可能同时操作数据库,如果你使用ODBC连接数据库,所有的用户都用同一个连接,频繁的创建销毁资源,这样导致速度很慢,效率低,所以WEB开发一半采用连接池技术,用架构做,现在常用的是Hibernate。
我要是没记错的话
JSEE开发桌面应用程序多,这样可能同时操作的人少,一般一个桌面程序也就一个人在操作,所以用ODBC也就足够了,可是虽然解决了效率的问题但是没有解决面向对象与面向关系的良好沟通。
J2EE ,JSEE后台的数据库连接技术是通用的不分j2ee和JSEE吧

java jdbc连接数据库 oracle的代码实现增删改查的方法怎么写

修改和删除,可以使用ResultSet直接修改,切换到状态就可以。。。。。。。
建议直接使用SQL去修改,特别是删除,使用SQL很快捷

在Java中如何对数据库中的数据进行操作

package com.dao;import java.sql.*;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;public class BaseDao {
/**
* 创建数据库连接及关闭
*/
// 打开连接
public static Connection getConnection() {
Connection con = null; /*************************** oracl 的连接 ***************************************/
// try { // Class.forName("oracle.jdbc.driver.OracleDriver");
// con = DriverManager.getConnection(
// "jdbc:oracle:thin:@127.0.0.1:1521:orcl", "bbs", "sa");
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// } catch (SQLException e) {
// e.printStackTrace();
// }
/******************************* sqlerver 的连接 ******************************/
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(
"jdbc:sqlserver://127.0.0.1:1433;databasename=bbs", "sa",
"zhou");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
/*********************************************************************/
return con;
} // 关闭
public static void closeAll(Connection connection,
PreparedStatement pStatement, ResultSet res) {
try {
if (connection != null && (!connection.isClosed())) {
connection.close();
}
if (res != null) {
res.close();
res = null;
}
if (pStatement != null) {
pStatement.close();
pStatement = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
对数据库增删改查package com.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.entity.News;public class NewsDao {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

/**
* 添加新闻
* @param news
* @return
*/
public boolean newsAdd(News news){
boolean result=false;
String sql="insert into news values(?,?)";
con=BaseDao.getConnection();
try {
pstmt=con.prepareStatement(sql);
pstmt.setString(1, news.getContent());
pstmt.setString(2, FormatTime.newTime());

int i = 0;
i = pstmt.executeUpdate();
if (i 》 0)
result = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* 修改新闻
* @param news
* @return
*/
public boolean updateNews(News news){
boolean result=false;
con=BaseDao.getConnection();
try {
pstmt=con.prepareStatement("update news set content=? ,writedate=? where newsid=?");
pstmt.setString(1, news.getContent());
pstmt.setString(2, FormatTime.newTime());
pstmt.setInt(3, news.getNewsID());
int i = 0;
i = pstmt.executeUpdate();
if (i 》 0)
result = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* 删除新闻
* @param news
* @return
*/
public boolean deleteNews(News news){
boolean result=false;
String sql=String.format("delete from news where newsid=%d", news.getNewsID());
con=BaseDao.getConnection();
try {
pstmt=con.prepareStatement(sql);

int i = 0;
i = pstmt.executeUpdate();
if (i 》 0)
result = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}

/**
* 删除新闻 重载
* @param newsId
* @return
*/
public boolean deleteNews(int newsId){
boolean result=false;
String sql=String.format("delete from news where newsid=%d", newsId);
con=BaseDao.getConnection();
try {
pstmt=con.prepareStatement(sql);
int i = 0;
i = pstmt.executeUpdate();
if (i 》 0)
result = true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* 查询所有的新闻
* @return
*/
public List《News》 selectAllNews(){
List《News》 list=new ArrayList《News》();
String sql="select * from Users";
con=BaseDao.getConnection();
try {
pstmt=con.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()){
News news=new News();
news.setNewsID(rs.getInt(1));
news.setContent(rs.getString(2));
news.setWriteDate(rs.getString(3));

list.add(news);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
BaseDao.closeAll(rs, pstmt, con);
}
return list;
}
/**
* 查询单个
* @return
*/
public News selectOneNews(){
News news=new News();
con=BaseDao.getConnection();
try {
pstmt=con.prepareStatement("select top 1 * from news order by newsid desc");
rs=pstmt.executeQuery();
while(rs.next()){
news.setNewsID(rs.getInt(1));
news.setContent(rs.getString(2));
news.setWriteDate(rs.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
BaseDao.closeAll(rs, pstmt, con);
}
return news;
}

}
实体类package com.entity;import java.io.Serializable;
public class News implements Serializable{
private int newsID;
private String content;
private String writeDate; public News() {
super();
// TODO Auto-generated constructor stub
} public News(String content, String writeDate) {
super();
this.content = content;
this.writeDate = writeDate;
} public News(int newsID, String content, String writeDate) {
super();
this.newsID = newsID;
this.content = content;
this.writeDate = writeDate;
} public int getNewsID() {
return newsID;
} public void setNewsID(int newsID) {
this.newsID = newsID;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public String getWriteDate() {
return writeDate;
} public void setWriteDate(String writeDate) {
this.writeDate = writeDate;
}
}

编写一个java程序,通过jdbc访问数据库实现对数据库的插入,删除,修改和查询操作

我刚写了一个只有插入的,望采纳
import java.sql.*;
import java.util.*;
public class TestPre {
public static void main(String args) {
int i=0,deptno=0;//i只做while循环使用,deptno是表dept2中的一个属性,类型是int
String dname=null,loc=null;//dname和loc也是表dept2的属性,类型是String
Scanner s=new Scanner(System.in);
System.out.println("请输入3个参数");
while(i《3){
try{
deptno=s.nextInt();
i++;
dname=s.next();
i++;
loc=s.next();
i++;
}catch(InputMismatchException e){
System.out.println("输入的类型不符,退出");
System.exit(-1);
}
}
Connection conn=null;
PreparedStatement pstmt=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/mydata?"+ "user=root&password=root");
pstmt=conn.prepareStatement("insert into dept2 values(?,?,?)");
pstmt.setInt(1, deptno);
pstmt.setString(2, dname);
pstmt.setString(3, loc);
pstmt.executeUpdate();
System.out.println("插入完成");
} catch (ClassNotFoundException e) {
System.out.println("连接数据库不成功,程序退出");
System.exit(-1);
} catch (SQLException e) {
System.out.println("连接数据库不成功,程序退出");
System.exit(-1);
}
finally{
try{
if(pstmt!=null){
pstmt.close();
pstmt=null;
}
if(conn!=null){
conn.close();
conn=null;
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
}

JAVA 实现数据库增删改查的Dao和DaoImpl的写法

package org.dao;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Date;
import org.dbc.DBManageer;
import org.dbc.DBUtil;
import org.vo.CardInfo;
public class CardInfoDao {
public void testResultSetMetaData() {
String sql = "select * from cardinfo";
Connection con = new DBUtil().getConnection();
PreparedStatement ps = null;
ResultSetMetaData rsmd = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
rsmd = rs.getMetaData();
for (int i = 1; i 《 rsmd.getColumnCount(); i++) {
System.out.print(" 数据类型名:" + rsmd.getColumnClassName(i));
System.out.print(" 别名:" + rsmd.getColumnLabel(i));
System.out.print(" 列名:" + rsmd.getColumnName(i));
System.out.print(" 数据类型:" + rsmd.getColumnTypeName(i));
System.out.println(" 数据类型:" + rsmd.getColumnType(i));
}
while (rs.next()) {
// 通过反射可以对VO对象(CardInfo)自动赋值
// for(...)
// CardInfo ci=new CardInfo();
// ci.setId(rs.getInt(columnIndex))
/*
* CardInfo ca = new CardInfo(); Class cc = ca.getClass();
*/
/*Class《?》 c = Class.forName("org.vo.CardInfo");
CardInfo ca = (CardInfo) c.newInstance();
ca.setCardId(rs.getString("cardId"));
ca.setCustomerName(rs.getString("customerName"));
ca.setCurrentMoney(rs.getFloat("currentMoney"));
ca.setOpenDate(rs.getDate("openDate"));
System.out.println(ca);//ok */

//加载一个CardInfo类
Class c = Class.forName("org.vo.CardInfo");
Object o = c.newInstance(); //获得它的一个实例
//定义String类的对象数组
Class { String.class};
//定义float类的对象数组
Class { float.class};
//定义Date(util)类的对象数组
Class { Date.class};
//获得setCardId方法
Method me = c.getMethod("setCardId", params);
//实例方法的参数
Object {rs.getString("cardId")};
//如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null。
//如果底层方法所需的形参数为 0,则所提供的 args 数组长度可以为 0 或 null。
//o 调用方法的对象 ostr 方法调用的参数
me.invoke(o, ostr);
//获得setCustomerName方法
Method name = c.getMethod("setCustomerName", params);
Object {rs.getString("customerName")};
name.invoke(o,cusname);
//获得setCurrentMoney方法
Method money = c.getMethod("setCurrentMoney", floatparams);
Object {rs.getFloat("currentMoney")};
money.invoke(o,cusmoney);
//获得setOpenDate方法
Method date = c.getMethod("setOpenDate",dateparams);
Object {rs.getDate("openDate")};
date.invoke(o, openDate);
//打印
System.out.println(o);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
public void showResultSet() {
String sql = "select * from cardinfo";
Connection con = new DBManageer().getConnection();
PreparedStatement ps = null;
try {
ps = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = ps.executeQuery();
System.out.println("---依次读取------");
while (rs.next()) {
CardInfo ca = new CardInfo();
ca.setCardId(rs.getString("cardId"));
ca.setCustomerName(rs.getString("customerName"));
ca.setCurrentMoney(rs.getFloat("currentMoney"));
ca.setOpenDate(rs.getDate("openDate"));
System.out.println(ca);
}
System.out.println("---倒读------");
while (rs.previous()) {
CardInfo ca = new CardInfo();
ca.setCardId(rs.getString("cardId"));
ca.setCustomerName(rs.getString("customerName"));
ca.setCurrentMoney(rs.getFloat("currentMoney"));
ca.setOpenDate(rs.getDate("openDate"));
System.out.println(ca);
}
rs.absolute(3);// 定位倒第几行
rs.updateString("customerName", "star");
// rs.updateRow();
rs.beforeFirst();
while (rs.next()) {
CardInfo ca = new CardInfo();
ca.setCardId(rs.getString("cardId"));
ca.setCustomerName(rs.getString("customerName"));
ca.setCurrentMoney(rs.getFloat("currentMoney"));
ca.setOpenDate(rs.getDate("openDate"));
System.out.println(ca);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

关于java连接数据库增删改查和在eclipse下 怎样使用java.jsp连接数据库,实现数据库的增删改查的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java连接数据库增删改查(在eclipse下 怎样使用java.jsp连接数据库,实现数据库的增删改查)

本文编辑:admin

更多文章:


维热纳尔密码翻译器(请问有谁知道古代密码学的发展过程)

维热纳尔密码翻译器(请问有谁知道古代密码学的发展过程)

今天给各位分享请问有谁知道古代密码学的发展过程的知识,其中也会对请问有谁知道古代密码学的发展过程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录请问有谁知道古代密码学的发展过程密码解密主要是用运用什么原理维热纳

2026年7月10日 23:15

手机老是出现failed(华为手机errconnectfailed)

手机老是出现failed(华为手机errconnectfailed)

“手机老是出现failed”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看手机老是出现failed(华为手机errconnectfailed)!本文目录华为手机errconnectfailed苹果手机为什么总出现失败怎么办啊

2025年12月31日 05:30

快递公司网站设计(中通快递logo的设计理念是什么)

快递公司网站设计(中通快递logo的设计理念是什么)

今天给各位分享中通快递logo的设计理念是什么的知识,其中也会对中通快递logo的设计理念是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录中通快递logo的设计理念是什么联邦快递网站的功能和特点物流公司网

2025年8月28日 15:45

mathematica10下载(mathematica免费下载地址)

mathematica10下载(mathematica免费下载地址)

大家好,今天小编来为大家解答以下的问题,关于mathematica10下载,mathematica免费下载地址这个很多人还不知道,现在让我们一起来看看吧!本文目录mathematica免费下载地址mathematica下载mathemati

2026年1月12日 23:00

catchphrase的意思(catchphrase是什么意思)

catchphrase的意思(catchphrase是什么意思)

大家好,今天小编来为大家解答以下的问题,关于catchphrase的意思,catchphrase是什么意思这个很多人还不知道,现在让我们一起来看看吧!本文目录catchphrase是什么意思phrase是什么意思catchphrase是什么

2025年7月19日 18:45

server作主语(英语you must set two server name values怎么翻译)

server作主语(英语you must set two server name values怎么翻译)

大家好,关于server作主语很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于英语you must set two server name values怎么翻译的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决

2026年2月25日 04:00

c语言求最大公约数和最小公倍数辗转相除法(c语言求最大公约数和最小公倍数)

c语言求最大公约数和最小公倍数辗转相除法(c语言求最大公约数和最小公倍数)

各位老铁们好,相信很多人对c语言求最大公约数和最小公倍数辗转相除法都不是特别的了解,因此呢,今天就来为大家分享下关于c语言求最大公约数和最小公倍数辗转相除法以及c语言求最大公约数和最小公倍数的问题知识,还望可以帮助大家,解决大家的一些困惑,

2025年6月24日 13:30

表单大师下载表单大师app下载(眉山市幼儿报名登记表怎么下载下来)

表单大师下载表单大师app下载(眉山市幼儿报名登记表怎么下载下来)

各位老铁们,大家好,今天由我来为大家分享表单大师下载表单大师app下载,以及眉山市幼儿报名登记表怎么下载下来的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2025年7月1日 03:15

webservice访问地址(浏览器中怎么访问WSDL文件我知道访问java的webservice为:http://localhost:8888/服务名/方法名WSDL)

webservice访问地址(浏览器中怎么访问WSDL文件我知道访问java的webservice为:http://localhost:8888/服务名/方法名WSDL)

大家好,webservice访问地址相信很多的网友都不是很明白,包括浏览器中怎么访问WSDL文件我知道访问java的webservice为:http://localhost:8888/服务名/方法名WSDL也是一样,不过没有关系,接下来就来

2026年5月7日 20:30

count函数怎么用来统计单元格数量(EXCEL中如何统计此列有数字的单元格个数)

count函数怎么用来统计单元格数量(EXCEL中如何统计此列有数字的单元格个数)

本篇文章给大家谈谈count函数怎么用来统计单元格数量,以及EXCEL中如何统计此列有数字的单元格个数对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔

2025年9月23日 17:15

eclipse jdk编译版本(JDK7搭配什么版本的eclipse若是jdk 1.7的话该用Eclipse的哪个版本)

eclipse jdk编译版本(JDK7搭配什么版本的eclipse若是jdk 1.7的话该用Eclipse的哪个版本)

今天给各位分享JDK7搭配什么版本的eclipse若是jdk 1.7的话该用Eclipse的哪个版本的知识,其中也会对JDK7搭配什么版本的eclipse若是jdk 1.7的话该用Eclipse的哪个版本进行解释,如果能碰巧解决你现在面临的

2026年1月15日 13:30

奔驰e300可以插u盘听歌吗(奔驰E300怎么插U盘)

奔驰e300可以插u盘听歌吗(奔驰E300怎么插U盘)

今天给各位分享奔驰E300怎么插U盘的知识,其中也会对奔驰E300怎么插U盘进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录奔驰E300怎么插U盘奔驰e300如何插U盘听歌2011奔驰e300车上有插u盘的地方

2025年12月11日 03:45

模板制作检验批多少米一张(3000多米的围墙,每100米做一个检验批具体怎么做)

模板制作检验批多少米一张(3000多米的围墙,每100米做一个检验批具体怎么做)

大家好,关于模板制作检验批多少米一张很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于3000多米的围墙,每100米做一个检验批具体怎么做的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站

2026年9月17日 02:30

easyuidatagrid 获取选中行数据到详情页(easyui datagrid 怎样获取点击行的数据)

easyuidatagrid 获取选中行数据到详情页(easyui datagrid 怎样获取点击行的数据)

大家好,如果您还对easyuidatagrid 获取选中行数据到详情页不太了解,没有关系,今天就由本站为大家分享easyuidatagrid 获取选中行数据到详情页的知识,包括easyui datagrid 怎样获取点击行的数据的问题都会给

2025年6月21日 20:00

img格式打开(win7电脑如何打开img文件win7系统打开img文件的方法)

img格式打开(win7电脑如何打开img文件win7系统打开img文件的方法)

本篇文章给大家谈谈img格式打开,以及win7电脑如何打开img文件win7系统打开img文件的方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录win7电脑如何打开img文件win7系统打开img文件的方法img用什么软件

2025年9月24日 08:30

befarform是什么意思(be far form中的form什么意思 说详细些)

befarform是什么意思(be far form中的form什么意思 说详细些)

其实befarform是什么意思的问题并不复杂,但是又很多的朋友都不太了解be far form中的form什么意思 说详细些,因此呢,今天小编就来为大家分享befarform是什么意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个

2025年12月14日 23:15

小时代2免费观看(小时代2电影的剧情简介谁知道)

小时代2免费观看(小时代2电影的剧情简介谁知道)

本篇文章给大家谈谈小时代2免费观看,以及小时代2电影的剧情简介谁知道对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录小时代2电影的剧情简介谁

2025年6月8日 05:45

js禁止页面前进和后退(禁止浏览器页面的前进和后退的方式)

js禁止页面前进和后退(禁止浏览器页面的前进和后退的方式)

今天给各位分享禁止浏览器页面的前进和后退的方式的知识,其中也会对禁止浏览器页面的前进和后退的方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录禁止浏览器页面的前进和后退的方式用js如何控制 html5 vid

2025年10月26日 14:15

xml文件和db文件的区别(db文件是什么文件啊)

xml文件和db文件的区别(db文件是什么文件啊)

“xml文件和db文件的区别”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看xml文件和db文件的区别(db文件是什么文件啊)!本文目录db文件是什么文件啊db文件是什么格式文件类型有那些db文件是什么文件啊.db是date

2026年7月9日 17:15

两函数相加定义域怎么求(两函数相加 定义区怎么求啊拜托了各位 谢谢)

两函数相加定义域怎么求(两函数相加 定义区怎么求啊拜托了各位 谢谢)

各位老铁们好,相信很多人对两函数相加定义域怎么求都不是特别的了解,因此呢,今天就来为大家分享下关于两函数相加定义域怎么求以及两函数相加 定义区怎么求啊拜托了各位 谢谢的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2026年9月20日 15:30

近期文章

ilitate(imitate意思是)
2026-09-25 23:30:01
本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索