web数据库连接实例

合集下载

WebSphere中DB2数据库连接池的配置

WebSphere中DB2数据库连接池的配置

1.进入管理控制台(http://localhost:9090/admin/)2.指定Java 2 连接器安全性使用的用户标识和密码的列表在安全性->JAAS配置->J2C认证数据图(一)然后点击新建按钮进入图二,这里别名和用户标识都写db2inst1(就是登录DB2数据库的用户名和密码,别名可以任意.),密码写登录DB2数据库的密码。

单击应用。

(这里我输入了别名为:DB2Connect,用户标识为:db2admin,密码****)图(二)3.选择:资源->JDBC提供程序,点击“新建”,建立JDBC提供程序。

图(三)点击“应用”后,在类路径中输入三个文件(这三个文件在DB2数据库的安装目录下的,搜索一下就能找到),也可以写成相对路径,再点击“应用”,然后保存,再保存。

4.定义数据源,如下图图(四)点击界面中“数据源后”再点击“新建”,建立数据源。

这里名称写DB2ConnData,JNDI名是jdbc/button,注意JNDI 名必须是上述格式,否则可能连接不上DB2数据库。

组件受管认证别名和容器受管的认证别名都选择在安全性->JAA配置->J2C认证数据里新建的选项。

点击应用。

5.界面上点击“定制属性”,定义连接池的databasename、serverName 信息(1) databasename的值修改为DB2数据库里的数据库名,点击“确定”保存配置.(2) serverName的值修改为DB2数据库所在机器的IP 地址,点击“确定”保存配置.其余的取默认值,然后一直确定即可。

最后到如下界面来测试连接:总结:1.进入管理控制台(http://localhost:9090/admin/)2.指定Java 2 连接器安全性使用的用户标识和密码的列表在安全性->JAAS配置->J2C认证数据里新建(这里是配置登陆DB2数据的用户名和密码)3.选择:资源->JDBC提供程序,点击“新建”,建立JDBC提供程序。

javaweb,标签库,函数库,数据库连接池实例

javaweb,标签库,函数库,数据库连接池实例

修改tomcat中的server.xml中的<Connector prot=”” protocol=”” maxThreads=””…..URIEncoding=”utf-8”>URIEncoding=”utf-8”是解决get方法传递中文参数乱码的问题让tomcat自动识别我们的修改要改动context.xml文件中的代码在<Context>标签中增加reloadable=”true”但是在产品发布的时候不能是true增加tomcat的使用者修改tomcat下的users.xml中的代码<tomcat-users><role rolename=”manager”><role rolename=”admin”><user username=”名字”password=”密码”roles=”admin,manager”></ tomcat-users >ctrl+shift+F //可以对我们的代码进行格式化http 80 , Ftp 21, smtp 25, pop3 110,查看提交的数据和从数据库取得数据是不是为空Mvc的优缺点:有利于分工,有利于组件的重用但是增加了系统的开发难度JspEL 直接写在jsp页面中也没有.jar包没有<%%> 在servlet2.4这个规范里或更高的规范里应用运算符:当字符串比较时是一个一个字符的比较大的就是true基本用法${表达式或变量}它的前后是没有空格的相当于但是不等价于<%=表达式或变量%> 这里的写的html语言会在客户端执行的可是设定jsp页面不使用jspEL 如下:<%@ page isELIgnored=”true”%> //设定当前页面不使用jspEL或者修改web.xml 是设定当前应用程序都不使用<web-app….><jsp-config><jsp-property-group><url-pattern>*.jsp</url-pattern><el-ignored>true</el-ignored></jsp-property-group></jsp-config></web-app>如果想要在页面直接输出${表达式或变量} 就需要转义\${表达式或变量}或者‟‟$‟‟{表达式或变量}是两个单引号<%pageContext.setAttribute(“username”,”xx”)%>${empty username}//该表达式是按照page→request→session→application的范围中去找username这个变量输出jsp内置对象的值<%pageContext.setAttribute(“uername”,”zhang”);request.setAttribute(“uername”,1);session.setAttribute(“uername”,new Integer(1));application.setAttribute(“uername”,”好的”);%>${ername} ${pageScope[“username”]}${ username}//按照page→ request→ session→application的范围中去找${ ername}${ ername}${ ername}输出bean中的参数值<jsp:useBean id=”user”class=””/> ${ername}或者采用点符号级联输出输出form表单中的值${param.表单中的参数名字}或者${paramV alues.表单中参数名字[数字]}//表示的是选中的参数值的第几个值从0开始${header[”host”]} 对应的是request.getHeaderNames()中的Host的值读取cookieresponse.addCookie(new Cookie(“user”,”123”)) ${er.value}读取web.xml文件中的初始参数${initParam.参数的名字}判断空值${empty 元素名称} 元素=””或元素=空的集合或根本就没有该元素或为null就都是为空${!empty 元素名称} 判断非空定制标记库好处是可以减少在jsp中的java代码java代码是写在处理类中的增强了表现层的处理能力javax.servlet.jsp.tagext.*;中放置的都是与定制标记的类和接口通过重写javax.servlet.jsp.tagext.TagSupport中的方法doStartTag() 和doAfterBodyTag() doEndTag()方法System.currentTimeMillis()//方法是得到当前时间首先是有一个标记处理类然后是编写.tld文件最后在jsp中使用自定义的标记了自定义标记库的打包需要的文件有处理类文件带包和tld文件tld文件要在WETA-INF文件夹下进入到放置文件按的目录使用命令jar –cvf 名字.jar * //*表示对所有文件进行打包名字.jar文件放到应用程序的WEB-INF下的lib目录下就可以使用了jstl标准的标记库和el配合使用需要下载jstl.jar和standard.jar包用<%@ taglib uri=” /jsp/jstl/core”prefix=”c也可以是任意的”%>引入有5个标记库核心标记库格式化标记库sql标记库xml标记库函数标记库核心标记库要配合el表达式使用<c:set value=”value” var=”name” [scope=”{page|request|session|application}”]/>默认是page< c:set value=”value”target=”target”property=”propertyName”/>//value是要赋的值target是一个对象property是一个对象的属性名就是给已有的对象的属性赋值<c:if test=”condition” var=”name” [scope=”{page|request|session|application}”/>默认为page<c:if test=”${ername= =‟system‟}” var =”result”/> <c:out value=”${result}”>或者<c:if test=”${ername= =‟system‟}” var =”result”>当result为true时,要执行的内容</c:if><c:chose > 内容(<when>and <otherwise>)</c:chose><c:when test=”condition”>语句体</c:when><c:otherwise>语句体</c:otherwise>举例:<c:chose ><c:when test=”${param.age>20}”>语句体</c:when>//提取表单中参数名为age的值<c:when test=” ${param.age>20 and param.age<80}”>语句体</c:when><c:otherwise>语句体</c:otherwise></c:chose><c:forEach[var=”name”] items=“collection”[varStatus=”varStatusName”] [begin=”begin”]””varStatus=”i” > ${变量} ${i.index}//输出的是当前数组成员的索引</c:foreach><c:foreach items=”${ map对象名}” var=”变量” begin=”” end=”” step=”” varStatus=”i” > ${变量.key} ${变量.value}</c:foreach><c:forEach items="${userlist}" var="user" varStatus="vs"><c:choose> vs.count是输出当前元素在userlist中的索引<c:when test="${vs.count % 2 == 0}"> <tr bgcolor="red"> </c:when><c:otherwise> <tr> </c:otherwise></c:choose></c:forEach><c:forEach begin="1" end="10">a<br>//输出10个a</c:forEach><c:forTokens items=“collection” delims=”delimiters” [var=”name”] [varStatus=”varStatusName”]<c:import url=”url” [context=”context”] [var=”name”] [scope=”{page|request|session|application} ” ] [charEncoding=”charEncoding”]> <c:param>带的参数</c:import><c:import url=”url” [context=”context”] [var=”name”] varReader=” varReadername”[charEncoding=”charEncoding”]> body content要增加的内容</c:import>可以把另一个页面的内容引入到当前页,该页面可以是本地的也可以是网络上的也可以另一个web应用中的页面<c:url value=”value” [context=”context”] [var=”name”] [scope=”{page|request|session|application }” ] />//不带参数的url地址的构造<c:url value=”value” [context=”context”] [var=”name”] [scope=”{page|request|session|application”hello”/> </c:url> ${urls}输出构造好的url http:/h.htm?p=hello<c:redirect url=”value” [context=”context”] />//url不带参数的转向<c:redirect context="/struts_login" url="/index.jsp"/><fmt:bundlebasename=”basename” [prefix=”prefix”][scope=”{page|request|session|applicaiton}”] >body content </fmt:bundle>属性名描述El 必选缺省值可以是无basename 设置使用的资源文件束文件的路径和名称,不应该包含任何本地化后缀或文件扩展名自定义函数标记库dwr框架要看一下它是服务器端的一个ajax框架。

WebSphere V6.1上配置达梦数据库连接

WebSphere V6.1上配置达梦数据库连接

WebSphere V6.1配置达梦数据库连接—汪利波
达梦数据库配置JDBC数据源。

第一步:点击JDBC提供程序,点击【新建】按钮。

数据库类型选择:用户自定义的,实现类名填写:
dm.jdbc.pool.DmdbConnectionPoolDataSource,名称:dm,点击【下一步】。

类路径填写实际环境中DM驱动包JAR的路径,比如:
C:\Program Files\IBM\Dm7JdbcDriver15.jar,点击【下一步】。

点击【完成】,DM的JDBC提供程序建立完成。

第二步:新建数据源:资源->JDBC->数据源,点击【新建】。

新建数据源:填写数据源名,JNDI名称:JDBC/数据源名,点击【下一步】。

选择现有的JDBC提供程序,选择新建的DM的JDBC提供程序,点击【下一步】。

继续点击【下一步】,点击【完成】。

第三步:更改数据源配置:资源->JDBC->数据源,点击新建的DM数据源,点击【定制属性】,点击【新建】。

名称:URL 值为:jdbc:dm://IP:端口/实例?user=username&password=password;
其中IP:DM数据库部署地址,端口:DM实例端口,实例:DM实例名,username:用户名称,password:密码。

第四步:测试连接:资源->JDBC->数据源,勾选新建的DM数据源,点击【测试连接】,测试通过。

Web连接数据库方法

Web连接数据库方法

con
=
new
SqlConnection("Data
Source=.;uid=sa;pwd=sa;Database=NorthWind"))
{
string username = "forever";
string strSQL = "select * from table where name='" + username + "'";
{
Response.Write(drv["第一个字段"]+"|"+drv["第二个字段"]);
}
}
}
8.通过修改 Web.config 配置文件来连接数据库
//1、修改 Web.config 配置文件 <configuration> <connectionStrings> </connectionStrings> //下面三行是添加的内容,即连接数据库的信息 <appSettings> <add key="connect" value="server=.;database=NorthWind;uid=sa;pwd=sa;"/> </appSettings> <system.web> //2、连接数据库 sCon = ConfigurationManager.AppSettings["connect"]; if (string.IsNullOrEmpty(sCon)) { Response.Write("连接字符串为空!"); } con = new SqlConnection(sCon); //3、打开数据库 if (con.State == ConnectionState.Closed) con.Open(); //4、查询函数 public SqlDataReader ExcuteDataReader(string strTxt, CommandType cmdType, SqlParameter[] Params) {

abp 连接sqlserver实例

abp 连接sqlserver实例

abp 连接sqlserver实例ABP( Boilerplate)是一个开源的应用程序框架,旨在帮助开发人员快速构建现代化、可拓展的Web应用程序。

本文将介绍如何使用ABP框架连接SQL Server实例。

在开始之前,首先需要确保已经安装了ABP框架和SQL Server数据库,并且已经创建了需要连接的数据库实例。

第一步是在ABP应用程序中配置数据库连接。

打开应用程序的`appsettings.json`文件,找到`ConnectionStrings`节点,在其中添加数据库连接字符串。

连接字符串的格式如下:```"Default":"Server=<server_name>;Database=<database_name>;User Id=<username>;Password=<password>;"```其中,`<server_name>`是SQL Server实例的名称或IP地址,`<database_name>`是要连接的数据库名称,`<username>`和`<password>`是连接数据库的用户名和密码。

配置完成后,我们需要在ABP应用程序中添加数据库上下文。

打开应用程序的`MyProjectNameDbContext`类文件,继承`AbpDbContext`类,并在构造函数中传入数据库连接字符串。

代码示例如下:```public class MyProjectNameDbContext : AbpDbContext{publicMyProjectNameDbContext(DbContextOptions<MyProjectNa meDbContext> options): base(options){}}```接下来,我们需要在应用程序的`Startup.cs`文件中注册数据库上下文。

webapi连接数据库的方法

webapi连接数据库的方法

webapi连接数据库的方法连接数据库是开发webapi时经常会用到的操作,可以通过以下几种方式连接数据库:- 引入命名空间:使用using语句引入System.Data和System.Data.SqlClient命名空间;-创建连接字符串:将数据库连接所需的信息,如数据库服务器地址、用户名、密码等,放在连接字符串中;- 创建连接对象:使用SqlConnection类创建连接对象,并将连接字符串作为参数传入;- 打开连接:使用Open(方法打开数据库连接;- 关闭连接:操作完数据库后,需要调用Connection对象的Close(方法关闭数据库连接。

```csharpusing System;using System.Data;using System.Data.SqlClient;namespace WebApiDemopublic class DatabaseConnectionpublic void ConnectDatabase//创建连接对象using (SqlConnection connection = newSqlConnection(connectionString))try//打开连接connection.Open(;//执行SQL语句string sql = "SELECT * FROM Customers";//执行查询while (reader.Read()//处理查询结果string name = reader.GetString(reader.GetOrdinal("Name"));int age = reader.GetInt32(reader.GetOrdinal("Age"));Console.WriteLine("Name: {0}, Age: {1}", name, age);}}}}catch (Exception ex)Console.WriteLine(ex.Message);}finally//关闭连接connection.Close(;}}}}```2.使用ORM框架连接数据库:ORM(Object-Relational Mapping)框架是一种将面向对象语言的对象与数据库中的表相映射的技术。

C语言Web开发入门前后端交互和数据库连接

C语言Web开发入门前后端交互和数据库连接

C语言Web开发入门前后端交互和数据库连接在现代互联网时代,Web开发成为了热门的技术方向之一。

C语言作为一门广泛应用的编程语言,也可以用于Web开发。

本文将介绍C 语言Web开发中的前后端交互和数据库连接的基本知识。

一、前后端交互前后端交互是Web开发中非常重要的一环,它决定了用户与网站之间的信息传递和数据交换。

在C语言中,我们可以利用CGI(通用网关接口)来实现前后端交互。

CGI是一种标准化的接口协议,它定义了Web服务器与后端程序之间的通信规范。

通过CGI,我们可以在C语言中编写后端程序,接收来自前端页面的请求,并作出响应。

以下是一个简单的C语言实例:```c#include<stdio.h>#include<stdlib.h>int main(){printf("Content-type: text/html\n\n");printf("<html><body>");printf("<h1>Hello, CGI!</h1>");printf("</body></html>");return 0;}```上述代码通过`printf`函数输出HTML文本,实现了一个简单的CGI程序。

通过在Web服务器上配置CGI的映射规则,可以将该程序与前端页面进行交互。

二、数据库连接在Web开发中,数据库的应用非常普遍,它可以用于存储和管理网站的各种数据。

在C语言中,我们可以使用ODBC(开放数据库连接)来实现与数据库的连接。

ODBC是一种面向数据库的接口规范,它提供了一套标准的函数库,用于C语言程序与数据库之间的交互。

在使用ODBC之前,我们需要先安装相应的ODBC驱动程序,并进行相应的配置。

以下是一个简单连接MySQL数据库的C语言示例:```c#include<stdio.h>#include<sql.h>#include<sqlext.h>int main(){SQLHENV henv;SQLHDBC hdbc;SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);SQLDriverConnect(hdbc, NULL,"DSN=test;UID=root;PWD=123456", SQL_NTS, NULL, 0, NULL,SQL_DRIVER_COMPLETE);// 执行SQL查询或更新操作等SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC, hdbc);SQLFreeHandle(SQL_HANDLE_ENV, henv);return 0;}```上述代码使用了ODBC函数库来实现与MySQL数据库的连接。

webapi连接数据库的方法

webapi连接数据库的方法

webapi连接数据库的方法
网站开发中,连接数据库的方法通常是通过Web API来实现的。

下面是一种常见的方法:
1.选取合适的数据库系统,如MySQL、Oracle、SQL Server等,并安装好数据库软件。

2.创建一个Web API项目,如使用 Core创建一个新
的Web API应用。

3.在Web API项目中,使用合适的数据库连接库(如
、Entity Framework等)来连接数据库。

4.编写代码来建立数据库连接,并执行相应的数据库操作,如
查询、插入、更新和删除等。

5.根据需要,将数据库操作封装为不同的API接口,以便客户
端通过HTTP请求调用。

6.通过客户端(如浏览器、移动应用等)发起HTTP请求,调
用相应的API接口。

7.API接口接收到请求后,进行相应的数据库操作,并将结果
返回给客户端。

8.客户端根据接口返回的数据进行相应的处理,如显示数据、
更新数据等。

需要注意的是,在连接数据库时需要确保数据库的连接字符串、用户名和密码等敏感信息是安全的,并且要正确处理数据库操作中可能出现的异常情况,以确保系统的可靠性和安全性。

myeclipse 连接数据库 建立web工程 简单测试访问 成功例子

myeclipse 连接数据库 建立web工程 简单测试访问 成功例子

Myeclipse 连接数据库测试查询成功一,建立数据库首先建立数据库,在数据库里建立表格,填充内容。

以navicat for MySql为例二,建立web工程三,连接数据库1,打开Database。

点击window窗口点击Open Perspective菜单中的MyEclipse Database Explorer2,创建连接。

在空白处右击鼠标新建(即new)或者点击菜单栏中的快捷键(图二中向下的三角符号)新建3,弹出Database Driver 菜单4,选择连接方式。

在Driver template选项框中选择MySql Connector/j5,填写配置信息1,在Driver name填写链接数据库的名称(这个可由自己喜好填写,建议最好和所做项目名称相关便于使用时查找)2,Connection URL用于填写连接要使用mysql数据库的地址(jdbc:mysql://[<:3306>]/)可改为(jdbc:mysql://localhost:3306/test),其中localhost表示的是连接本地数据库的意思,3306是表示连接mysql数据库的端口号(不同的数据库端口号也不相同)3,User name 填写数据库用户名mysql默认的是root,4,Password填写访问mysql数据库时的你所设置的访问密码6,添加驱动点击Add JARs添加myeclipse连接mysql数据库的驱动文件(存放驱动的文件最好是英文目录,在测试时确定mysql数据库已经打开,否则测试不会成功),在这里添加的是mysql-connector-java-5.1.7-bin版本(可以在网上搜索下载、)7,测试数据配置是否正确点击Test Driver测试是否配置成功输入访问数据库密码8,测试成功测试连接mysql数据库成功,点击Finish完成创建连接。

9.连接数据库右击你创建的连接点击Open another connection输入mysql数据库密码就能看到所创建的数据库表四,web工程添加驱动包选中工程,右击-Build Path-Add External Archives找到下载的驱动包,并打开打开之后,如图,则添加成功!五,访问数据库,测试打开WebRoot-index.jsp,粘贴如下代码,并保存把index.jsp中的代码改为如下:<%@ page contentType="text/html; charset=gb2312" %><%@ page language="java" %><%@ page import="com.mysql.jdbc.Driver" %><%@ page import="java.sql.*" %><% //驱动程序名String driverName="com.mysql.jdbc.Driver";//数据库用户名String userName="root";//密码String userPasswd="123456";//数据库名String dbName="companysystem";//表名String tableName="admin";//联结字符串Stringurl="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+u serPasswd;Class.forName("com.mysql.jdbc.Driver").newInstance();Connection connection=DriverManager.getConnection(url);Statement statement = connection.createStatement();String sql="SELECT * FROM "+tableName;ResultSet rs = statement.executeQuery(sql);//获得数据结果集合ResultSetMetaData rmeta = rs.getMetaData();//确定数据集的列数,亦字段数int numColumns=rmeta.getColumnCount();//输出每一个数据值out.print("id");out.print("|");out.print("num");out.print("<br>");while(rs.next()) {out.print(rs.getString(1)+" ");out.print("|");out.print(rs.getString(2));out.print("<br>");out.print("<br>");out.print("数据库操作成功,恭喜你"); rs.close();statement.close();connection.close();%>六,把工程部署到服务器上去Project可以选择把哪个工程部署到服务器上Server选择服务器选中后点击finish,成功后则会显示Successfully deployed七,运行工程,在服务器上八,查看结果在地址栏中输入。

android 调用webservice 连接sqlserver实例

android 调用webservice 连接sqlserver实例

Android 调用 WebService 连接 SQLServer 实例详解随着移动互联网的快速发展,Android 应用程序越来越普及。

在开发 Android 应用程序时,我们经常需要与远程数据库进行交互。

SQL Server 是一种流行的关系型数据库,而 WebService 是一种常用的远程调用技术。

下面我们将详细介绍如何在 Android 应用程序中调用 WebService,连接 SQLServer 数据库的实例。

一、准备工作1.安装 SQL Server:首先需要在本地或远程服务器上安装 SQL Server 数据库,并创建一个数据库和相应的表。

2.创建 WebService:创建一个 WebService,该 WebService 将连接到 SQLServer 数据库,执行相应的操作,并将结果返回给客户端。

3.创建 Android 项目:使用 Android Studio 创建一个新的 Android 项目,并添加必要的依赖项。

二、调用 WebService1.添加 WebService 地址:在 Android 项目中,将 WebService 的地址添加到项目的 URL 列表中。

2.创建 WebService 客户端:使用 HttpClient 或 OkHttp 等网络库创建WebService 客户端,并实现相应的回调接口。

3.调用 WebService 方法:调用 WebService 方法,并传递必要的参数。

例如,调用查询数据的 WebService 方法,并传递查询条件。

4.处理返回结果:在回调接口中处理返回结果,例如解析 JSON 数据。

三、连接 SQLServer1.使用 JDBC:使用 JDBC(Java Database Connectivity)连接 SQL Server数据库。

首先需要下载并安装相应的 JDBC 驱动程序,然后在代码中加载驱动程序,建立连接。

Web服务数据库访问中间件的实现

Web服务数据库访问中间件的实现

Web服务数据库访问中间件的实现[日期:2006-05-23] 来源:作者:[字体:大中小]王卫民郭鸣贺冬春井冈山学院计算机系摘要:本文分析现有的数据库访问中间件的现状,指出其中存在的问题,得出应用新技术的必要性。

开发了一个基于Web服务技术的数据库访问中间件WSDBM,并以一个应用实例验证了该中间件的有效性。

关键词:Web服务;数据库访问中间件;.Net1 引言随着Intranet/Internet网络的迅猛发展,面向网络的分布式数据库成为支持Internet服务的关键,传统的数据库访问技术已渐渐不能满足分布式应用集成的需要【1】。

利用新技术,研究和开发新的数据库访问中间件成为数据库研究领域的主要方向之一。

Web服务是一种崭新的分布式计算模型,基于一系列开放的技术标准,其松散耦合、语言中立、平台无关性、开放性使得它将成为下一代电子商务的架构,成为下一代的WWW【2】。

提供了基于“.Net框架”的综合开发平台,它提供了涉及客户端、服务器和服务的单独、统一的编程模型。

“.Net框架”和Visual 一起,给我们提供了一个完整的应用程序开发平台。

本文主要的工作就是在Visual 平台上,利用Web服务将现有的数据库访问方式的封装成中间件,使得封装后的中间件可以满足分布式应用的需要。

2 Web服务中间件接口的定义现有通用的数据库访问方式,它的主要操作有:设置数据库连接,打开和关闭数据库,执行查询和执行其他的Sql语句,实现事务管理和缓冲池管理。

比较先进的数据库访问方式还支持实时数据库连接。

因此,为了实现对传统数据库访问方式的封装,我们首先要定义一个Web服务,这个Web服务至少应该拥有以上所列的Web方法(属性为WebMethod的pu blic函数成员)。

这些方法就组成了这个Web服务的接口。

.Net下,Web服务的实现都封装在System.Web.Services.WebService这个类中。

为了实现对数据库访问方式的Web服务的封装,我们必须定义一个新的类,它继承于WebService或是它的子类。

jdbc与javaweb实例

jdbc与javaweb实例

jdbc与javaweb实例JDBC与JavaWeb实例一、引言在现代的软件开发中,JavaWeb应用已经成为了非常常见的一种开发方式。

而在JavaWeb应用中,与数据库的交互是非常重要的一部分。

JDBC(Java Database Connectivity)作为Java应用程序与数据库之间的桥梁,为我们提供了一种灵活、高效的数据库访问方式。

本文将通过一个简单的JavaWeb实例,介绍如何使用JDBC来实现与数据库的交互。

二、背景知识在开始之前,我们需要了解一些基本的背景知识。

首先,我们需要了解什么是JavaWeb应用。

简单来说,JavaWeb应用是基于Java语言和Web技术来开发的应用程序,它运行在Web服务器上,并通过浏览器来访问。

其次,我们需要了解JDBC是什么。

JDBC是Java提供的一组API,用于与数据库进行交互。

通过JDBC,我们可以连接数据库、执行SQL语句、处理查询结果等。

三、实例介绍假设我们正在开发一个简单的学生管理系统,我们需要实现以下功能:添加学生信息、查询学生信息、修改学生信息和删除学生信息。

为了实现这些功能,我们需要先创建一个数据库表来存储学生信息。

下面是我们创建的students表的结构:CREATE TABLE students (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,gender VARCHAR(10));接下来,我们将使用JDBC来实现这些功能。

首先,我们需要在JavaWeb项目中引入JDBC的依赖。

在pom.xml文件中添加以下依赖:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency>然后,我们需要在JavaWeb项目中创建一个名为StudentDAO的类,用于封装与数据库的交互逻辑。

webapi连接数据库的方法

webapi连接数据库的方法

webapi连接数据库的方法连接数据库是开发Web API的重要一步,数据库用于存储和管理数据,通过连接数据库,我们可以在Web API中对数据进行增删改查操作。

下面将介绍一种常用的方法来连接数据库。

1.选择适当的数据库管理系统(DBMS)首先,我们需要选择适合我们开发需求的数据库管理系统(DBMS)。

常用的DBMS包括MySQL、SqlServer、Oracle等。

我们需要根据具体情况来选择。

2.安装数据库管理系统3.创建数据库安装完成后,我们需要创建一个数据库来存储数据。

可以使用DBMS提供的命令行工具或者图形界面工具来创建数据库。

4.创建数据库表在数据库中,数据以表的形式进行组织。

我们需要根据我们的需求来创建相应的表,并定义表的结构,包括列名、列类型、主键等。

5.安装数据库连接驱动程序6. 在Web API项目中添加数据库连接配置在我们的Web API项目中,我们需要添加数据库连接的配置。

配置包括数据库连接字符串、连接超时时间、最大连接数等信息。

不同的开发框架和编程语言有相应的配置方式,我们需要按照具体情况来配置。

7.建立数据库连接对象在我们的Web API代码中,我们需要建立一个数据库连接对象,用于与数据库进行交互。

我们需要使用数据库连接驱动程序提供的API来建立连接对象。

8.打开数据库连接连接对象建立好后,我们需要调用打开连接的方法,打开与数据库的连接。

此时,我们的Web API就与数据库建立了连接,并可以进行相关的操作。

9.执行数据库查询操作连接成功后,我们可以使用SQL语句来进行数据库查询操作,比如查询数据,插入数据,更新数据等。

我们需要根据具体的DBMS和API提供的方法来执行相应的查询操作。

10.关闭数据库连接在我们的Web API完成数据库操作后,我们需要调用关闭连接的方法,关闭与数据库的连接。

这样可以释放资源,并确保数据库连接对象被正确关闭。

javaWeb使用servlet并且连接数据库向数据库插入数据

javaWeb使用servlet并且连接数据库向数据库插入数据

javaWeb使⽤servlet并且连接数据库向数据库插⼊数据1.打开myeclipse,创建⼀个web项⽬。

2.在index.jsp (在WebRoot下⾯)页⾯的body⾥⾯加⼊ 如下代码:<div align="center"><form action="servlet/LoginServlet" method="post"> <!--处理表单的servlet ,需要替换成⾃⼰的servlet,在下⾯创建的 --><table><tr><td>账号:<input name="userName" type="text"/></td></tr><tr><td>密码:<input name="userPassword" type="password"/></td></tr><tr><td ><input type="submit" value="登陆"/><input type="reset" value="取消"/></td></tr></table></form></div>3.创建servlet。

(1)点击src——右键——new——package——输⼊包名字(2)点击刚创建的包—右键——new——servlet——输⼊名字—finish。

打开WebRoot——WEB——INF——打开web.xml,可以看见如下信息,myeclipse⾃动为我们⽣成了servlet的配置<servlet><description>This is the description of my J2EE component</description><display-name>This is the display name of my J2EE component</display-name><servlet-name>LoginServlet</servlet-name><servlet-class>com.hck.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/servlet/LoginServlet</url-pattern></servlet-mapping>我的index.jsp⾥⾯表单<form action="servlet/LoginServlet" method="post"> action⾥⾯的值就是和和这个配置⾥⾯的蓝⾊部分⼀致。

在ASP.NET中如何使用web.config文件配置数据库连接

在ASP.NET中如何使用web.config文件配置数据库连接

在中如何使用web.config文件配置数据库连接作者:张影来源:《电脑知识与技术》2013年第11期摘要:开发网站时,经常要用到的操作就是数据库操作,在web.config文件中对连接数据库的代码进行配置是经常使用的操作,优点是当需要改变连接数据库的代码的时候,不用对每个页面中的连接数据库的代码进行修改,只修改web.config文件中的连接数据库的代码就可以了。

关键词:配置;数据库;web.config;连接中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2013)11-2536-02在开发WEB应用程序时经常会出现这种情形,程序在部署时希望能够保密,发布项目时,并不把源代码也一起发布,但是部署环境可能与开发环境不同,而.net 为用户提供了利用配置文件保存项目配置参数的快捷方法,配置文件的扩展名一般是.config。

web.config文件就是中默认的配置文件。

比如创建一个节用来存储连接数据库的字符串,当 页面需要与数据库进行交互时,就不必每次都进行连接数据库了,而且当整个网站或数据库需要转移到别的服务器上时,只要修改web.config文件中连接数据库的配置代码即可,不用再依次修改所有页面的数据库配置代码了。

1 web.config文件介绍Web.config文件是一个XML文本文件, Web 应用程序的配置信息都储存在这个文件中,例如 Web 应用程序的配置连接数据库的参数、对身份验证的方式等都是最常用的设置,在应用程序的每一个目录中它都可以出现。

当我们在.net环境下创建一个网站时,默认情况下总是会自动生成一个web.config文件,位置在根目录中,文件中包含默认的配置参数,并且所有的子目录都继承根目录中web.config文件的配置参数。

当需要修改子目录中web.config文件的配置信息时,可以在相同目录下创建一个新的Web.config文件,此时就可以修改该文件中的一些配置设置。

webconfig配置数据库连接

webconfig配置数据库连接

web.config配置数据库连接第一种:取连接字符串string connString = System.Web.Configuration.WebConfigurationManager.Connecti onStrings["SqlConnStr"].ConnectionString;或者protected static string connectionString = ConfigurationManager.ConnectionStrings ["SqlConnStr"].ConnectionString;web.config文件:加在</configSections>后面<connectionStrings><remove name="LocalSqlServer"/><add name="SqlConnStr" connectionString="user id=xx;password=xx;initial catal og=database_name;data source=.\sqlxxxx"/></connectionStrings>第二种:取连接字符串:string myvar=configurationsettings.appsettings["connstring"];web.config文件:加在<appsettings>和</appsettings> 之间<appsettings><add key="connstring" value="uid=xx;pwd=xx;database=batabase_name;server=(local)"/></appsettings>据说两者通用,但是第二种是2.0的新特性,建议使用第二种。

web.config配置文件示例

web.config配置文件示例

web.config配置⽂件⽰例为了⽅便配置web.config⽂件,我写了⼀个常⽤的web.config⽂件的⽰例,可以以此为模版根据需要修改。

创建web.config⽂件的三种快捷⽅法:1、⽤VS2005中的⽹站配置⼯具配置2、参考C:\WINDOWS\\Framework\v2.0.50727(.net framework版本)\CONFIG\⽬录下的machine.config ⽂件进⾏编写3、以下边这个⽂件作模版修改〈membership>〈providers>〈remove name="NetSqlMembershipProvider" />〈add name="NetSqlMembershipProvider"type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="strConnUserDB"enablePasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="true"applicationName="/"requiresUniqueEmail="false"passwordFormat="Hashed"maxInvalidPasswordAttempts="5"minRequiredPasswordLength="7"minRequiredNonalphanumericCharacters="1"passwordAttemptWindow="10"passwordStrengthRegularExpression=""description="存储membership数据"/>〈/providers>〈/membership>〈profile enabled="true" defaultProvider="NetSqlProfileProvider" inherits="">〈providers>〈remove name="NetSqlProfileProvider" />〈add name="NetSqlProfileProvider"connectionStringName="strConnUserDB"applicationName="/"type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"description="存储Profile数据"/>〈/providers>〈properties>〈add name="Name"/>〈add name="BackColor" type="System.Drawing.Color" allowAnonymous="true" serializeAs="Binary"/>〈/properties>〈/profile>〈roleManager enabled="true" cacheRolesInCookie="true">〈providers>〈remove name="NetSqlRoleProvider" />〈add name="NetSqlRoleProvider"connectionStringName="strConnUserDB"applicationName="/"type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"description="存储Role数据"/>〈/providers>〈/roleManager>〈!-- Other roleManager attributes (and their defaults) include:cookieName=".ASPXROLES"cookieTimeout="30"cookiePath="/"cookieRequireSSL="false"cookieSlidingExpiration="true" // Renew expiring cookies?createPersistentCookie="false" // Issue persistent cookie?cookieProtection="All" /> // Cookie protection level-->〈compilation debug="false" />〈authentication mode="Forms" />〈!--〈anonymousIdentificationenabled="true"cookieName=".ASPXANONYMOUS"cookieTimeout="43200"cookiePath="/"cookieRequireSSL="false"cookieSlidingExpiration="true"cookieProtection="All"cookieless="UseCookies"/>-->〈!--〈customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">〈error statusCode="403" redirect="NoAccess.htm" />〈error statusCode="404" redirect="FileNotFound.htm" />〈/customErrors>-->〈/system.web>〈location path="user">〈system.web>〈authorization>〈allow roles="?" />〈deny users="*"/>〈/authorization>〈/system.web>〈/location>〈/configuration>web.config详细分析讲解【⼀】在部署程序时为了保密起见并不将源代码随项⽬⼀同发布,⽽我们开发时的环境与部署环境可能不⼀致(⽐如数据库不⼀样),如果在代码中保存这些配置这些信息部署时需要到⽤户那⾥更改代码再重新编译,这种部署⽅式⾮常⿇烦。

Web软件应用案例分析期末复习题

Web软件应用案例分析期末复习题

Web软件应用案例分析习题1. 设置数据库连接信息。

请回答以下问题。

在Web.Config配置文件中设置数据库连接信息如下:<connectionStrings><add name="ConnectionString" connectionString="DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\实例数据库.MDF; Integrated Security=True;"/></connectionStrings>针对上述代码有以下几个问题:(1)D ata Source表示SQL Server数据库服务器的名称,“.\SQLEXPRESS”是本地SQL Server默认服务器Express名称。

(2)A ttachDbFilename表示数据库的路径和文件名。

(3)“|DataDirectory|”表示网站默认数据库路径。

2. 访问数据库公共类。

请回答以下问题。

编写了一个BaseClass.cs类,负责数据库数据的操作。

请回答如下问题:(1)请问下面的语句有什么作用?String strConn;public BaseClass(){strConn =ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;}(2)请问下面的语句有什么作用?public DataTable ReadTable(String strSql){DataTable dt=new DataTable();SqlConnection Conn = new SqlConnection(strConn);Conn.Open();SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);Cmd.Fill(dt);Conn.Close();return dt;}(3)请问下面的语句有什么作用?public DataSet ReadDataSet(String strSql){DataSet ds=new DataSet();SqlConnection Conn = new SqlConnection(strConn)Conn.Open();SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);Conn.Close();return ds;}(4)请问下面的语句有什么作用?public DataSet GetDataSet(String strSql, String tableName){DataSet ds = new DataSet();SqlConnection Conn = new SqlConnection(strConn);Conn.Open();SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);Cmd.Fill(ds, tableName);Conn.Close();return ds;}(5)请问下面的语句有什么作用?public string Readstr(String strSql, int flag){DataSet ds=new DataSet();String str;SqlConnection Conn = new SqlConnection(strConn);SqlDataAdapter Cmd = new SqlDataAdapter(strSql, Conn);Cmd.Fill(ds);str=ds.Tables[0].Rows[0].ItemArray[flag].ToString();Conn.Close();return str;}(6)请问下面的语句有什么作用?public SqlDataReader readrow(String sql){SqlConnection Conn = new SqlConnection(strConn);Conn.Open();SqlCommand Comm = new SqlCommand(sql, Conn);SqlDataReader Reader = Comm.ExecuteReader();if (Reader.Read()) {Comm.Dispose();return Reader;}else {Comm.Dispose();return null;}}(7)请问下面的语句有什么作用?public void execsql(String strSql){SqlConnection Conn = new SqlConnection(strConn);SqlCommand Comm = new SqlCommand(strSql, Conn);Conn.Open();Comm.ExecuteNonQuery();Conn.Close();}3母版页。

Web程序数据库应用

Web程序数据库应用
中使 用和 操 作 数 据 库 的 方 法及 需 注 意的 问题 。 关 键 词 : b A P; 据 库 应 用 We ; S 数
’c 引言。 时下互联网已渗透到我们 日 常生活的 e d C n ' vr etO j ( OD . r ea h t - q i =” o t n - y ' n e t t x/ St b on: re.rae bet" D B <n t tp e u v C n e t T pe o t n =”e t  ̄e C - c A h,l hastg 2 2’ t ;c re- b 31 ’ n ' > 各个方面,而 we 应用大都离不开数据库的支 Co e t n' b n ci ’ o d o nE e ue Co bC n .x c t mma d x, c rs - n Te t Re od Af <ik r l sye h e” tp - ' x/s” h e=’es ln e=”tls e t y e-’ t t c e rf ' s. x 持, 如何在 We 程序中用好数据库成为 We 应用 b b c I s ’ > fce , t n e tdOpi s o 开发中的重要内容。 We 应用开发中使用数据 在 b 如要返 回 数据集 , 格式是 : dd> e学生信息查询< i > /t te l 库 。目 前主要有用传统开发工具开发的 C I S G、 - I
st r = b n  ̄x c e ( mma d e t <h a > e s d Co n eut co n T x, /e d
< dm bd c n ,b iv r % i d ,b o d Dr e R crs f ce,pi s eodA e t O t n) d o S 也可以用 :b o n x ue S L或 Str: d =  ̄t d n l fa d ” d C n. e t Q Ec e s b ’ u e tn o n b

PythonWeb开发实战案例案例

PythonWeb开发实战案例案例

PythonWeb开发实战案例案例Python Web 开发实战案例Python 是一种简洁、高效的编程语言,被广泛应用于 Web 开发领域。

本文将通过几个实战案例介绍如何使用 Python 进行 Web 开发,包括 Django 框架的搭建、数据库的连接与操作、前后端交互等。

案例一:Django 框架的搭建1. 安装 Django:使用 pip 命令安装最新版本的 Django。

2. 创建项目:使用 django-admin startproject 命令创建一个 Django 项目。

3. 创建应用:使用 python manage.py startapp 命令创建一个应用。

4. 配置数据库:在 settings.py 文件中进行数据库的配置。

5. 创建模型:在 models.py 文件中定义数据库模型。

6. 迁移数据库:使用 python manage.py makemigrations 和 python manage.py migrate 命令将模型映射到数据库。

7. 创建视图:在 views.py 文件中编写视图函数,实现业务逻辑。

8. 配置 URL:在 urls.py 文件中将 URL 映射到对应的视图函数。

9. 运行项目:使用 python manage.py runserver 命令启动服务器,访问项目并验证功能。

案例二:数据库的连接与操作1. 安装数据库驱动程序:使用pip 命令安装相应的数据库驱动程序,如 pymysql。

2. 连接数据库:在 Python 代码中使用数据库连接字符串连接数据库。

3. 执行 SQL 语句:使用连接对象的 execute() 方法执行 SQL 语句,并通过 fetchone() 或 fetchall() 方法获取执行结果。

案例三:前后端交互1. 前端页面设计:使用 HTML、CSS 和 JavaScript 设计用户界面。

2. 后端接口编写:在Django 项目的views.py 文件中编写接口函数,处理前端请求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

二、WEB服务器与数据库的链接
• 1. 单击“开始”,依次指向“程序”、“Microsoft SQL Server 2005”和“配置工具”,然后单击“SQL Server 外围 应用配置器”。

• 2. 在“SQL Server 2005 外围应用配置器”页上,单击“服 务和连接的外围应用配置器”。
• 参考资料
• 1. /article/29787.htm • 2./wxhbcn/item/76a5d42c9c000 30b43634ad7 • 3. /thread-232270-1-1.html • 4./view/40488c41b307e871 01f69668.html?pn=50 • 5. 《C#项目开发全程实录》(第三版),冯庆东, 杨丽 编著,清华大学出版社 2013年10月 • 6. 《21天学通C#》,周红安等编著,北京:电子 工业出版社, 2009年1月
• 3. 在“服务和连接的外围应用配置器”页上,展开“数据库引擎”, 然后在打开的窗口中选择“服务和连接的外围应用配置器”->然后选 择Database Engine节点下的 “远程连接”,选择“本地连接和远程连 接”,同时选择“同时使用TCP/IP和named pipes”,单击“应用”。然 后需要重新启动数据库服务就可以了。直到重新启动数据库引擎服务 后,对连接设置所做的更改才会生效。
WEB服务器与数据库的连接 实例
一、 IIS安装配置
• 1、首先是安装IIS。打开控制面板,找到 “程序与功能”,点进去
• 2、点击左侧“打开或关闭Windows功能”
• 3、找到“Internet 信 息服务”,如图打勾 即可。然后等待安装 完成。
• 4、安装完成后,再回到控制面板里面,找 到“管理工具”,点进入 • 5、双击“Internet 信息服务(IIS)管理器”就 是IIS了 • 6、选中“Default Web Site”,双击中间的 “ASP”。把“启用父路径”改为“True”
登录界面如下图所示,程序见下页。
• • • • • • • • • • • • • • • • • • • • • • • • • • •
protected void Button1_Click(object sender, EventArgs e) { Session["username"] = this.txtNum.Text; if (this.ddlstatus.SelectedValue == "导师") { if (BaseClass.CheckTeacher(txtNum.Text.Trim(), txtPwd.Text.Trim())) { Session["ID"] = txtNum.Text.Trim(); Response.Redirect("Daoshi/Info.aspx"); } else { Response.Write("<script>alert('您不是导师或者用户名和密码错误');location='Login.aspx'</script> "); txtNum.Focus(); } } if (this.ddlstatus.SelectedValue == "管理员") { if (BaseClass.CheckAdmin(txtNum.Text.Trim(), txtPwd.Text.Trim())) { Session["admin"] = txtNum.Text; Response.Redirect("Admin1/First.aspx"); } else { Response.Write("<script>alert('您不是管理员或者用户名和密码错误');location='Login.aspx'</script>"); }
查询功能界面如下图所示:
查询的相关程序,如下:
• • • • • • • • • • • • • • • • • • • • • • • • • • • • •
public partial class xianshi : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnserch_Click(object sender, EventArgs e) { if (txtKey.Text == "") { string strsql = "select * from tb_Teacher order by ID asc"; BaseClass.BindDG(gvTeacherInfo, "ID", strsql, "tchinfo"); } else { string stype = ddlType.SelectedItem.Text; string strsql = ""; switch (stype) { case "工号": strsql = "select * from tb_Teacher where TchNum like '%" + txtKey.Text.Trim() + "%'"; BaseClass.BindDG(gvTeacherInfo, "ID", strsql, "tchinfo"); ; break; case "姓名": strsql = "select * from tb_Teacher where TchName like '%" + txtKey.Text.Trim() + "%'"; BaseClass.BindDG(gvTeacherInfo, "ID", strsql, "tchinfo"); ; break; } } }
• 6把登陆设置改为SQL Server 和 Windows 身份验证模式,具体设置如 下: 打开SQL Server Manage看属性,在安全性选项里面对服务身份验证选择“SQL Server 和 Windows 身份验证模式”。
• 7.修改SQL Server sa的密码,体设置如下: 在SQL Server Management Studio管理器中,展开服务器上的“安 全性”->登陆名->在sa帐号上点右键属性,这样在“常规”的选择页 中更改sa登陆帐号的密码。注意SQL Server2005中,不允许密码设置简 单,否则会通不过。
• 4. 在“服务和连接的外围应用配置器”页上,展开“数据 库引擎”,依次单击“服务”和“停止”,等待 MSSQLSERVER 服务停止,然后单击“启动”以重新启动 MSSQLSERVER 服务。
• 5. 远程连接端口设置
• 在服务器上打开SQL Server Configuration Manager。选择 SQL Server配置治理器->SQL Server 2005网络配置>MSSQLSERVER的协议->TCP/IP,在弹出对话框中选择IP地 址->IPALL->TCP端口,设置为可用端口。(如果默认的1433 端口老是连接不上,你就设置为你确认已经打开的端口试 试,如21端口等)
在visual studio中打开数据库链接的基本程序如下所示: public static SqlConnection DBCon() { return new SqlConnection("server=.;database=db_Daoshi;uid=sa;pwd="); } public static void BindDG(GridView dg,string id,string strSql,string Tname) { SqlConnection conn = DBCon (); //创建连接数据库 SqlDataAdapter sda =new SqlDataAdapter(strSql,conn);//传入参数 DataSet ds=new DataSet();//声明并且初始化dataSet sda.Fill(ds,Tname);//填充 dg.DataSource = ds.Tables[Tname];//绑定数据源 dg.DataKeyNames=new string []{id}; dg.DataBind();//绑定到GridView控件 }//执行SQL语句查询数据库,数据库返回一个表,然后用显示控件GridView显示出来这个表 public static void OperateData(string strsql)//定义一个静态的执行数据库的函数 { SqlConnection conn =DBCon ();//连接数据库 conn .Open ();//打开数据库连接 SqlCommand cmd=new SqlCommand(strsql ,conn );//执行参数传递过来的命令 cmd .ExecuteNonQuery ();//返回值 conn .Close() ;//关闭数据库 }
• 然后在选择页的“状态”的登录修改为启用。
三、WEB查询功能的实现
• 下面以一个简单的导师信息查询系统为例, 介绍一下在visual studio中如何实现WEB的 查询功能。 • 首先要在SQL中建立我们所需要的表。 • 以下为管理员基本信息表。
• 导师基本信息表
• • • • • • • • • • • • • • • • • • • • • • • •
相关文档
最新文档