实验1 常用的客户端组件
- 格式:doc
- 大小:331.00 KB
- 文档页数:5
实验一经典软件体系结构风格(一)实验一经典软件体系结构风格(一)经典软件体系结构风格(一)是指基于客户-服务器模式的软件架构风格。
该架构风格基于分布式的计算机环境,将软件系统划分为两个主要的组件:客户端和服务器端。
客户端负责用户界面和用户交互,服务器端负责处理业务逻辑和数据存储。
在经典软件体系结构风格中,客户端和服务器端可以运行在不同的计算机上,并通过网络进行通信。
客户端一般运行在用户的工作站,提供用户友好的界面和交互方式。
服务器端通常运行在高性能的计算机上,承担大部分的计算和数据处理任务。
该架构风格的主要优点如下:1.分工明确:客户端负责用户界面和用户交互,服务器端负责业务逻辑和数据处理。
通过明确的分工,可以提高系统的可维护性和可扩展性。
2.高可用性:由于客户端和服务器端可以运行在不同的计算机上,可以通过多个服务器实现系统的高可用性。
当一些服务器发生故障时,系统可以自动切换到其他可用的服务器。
3.灵活性:由于客户端和服务器端是独立的组件,可以根据需要灵活地调整部署和扩容。
例如,可以增加或减少服务器的数量,以适应负载的变化。
4.性能优化:通过将业务逻辑和数据处理任务放在服务器端,可以充分利用服务器的计算和存储能力,提高系统的性能和响应速度。
5.安全性:由于客户端和服务器端通过网络进行通信,可以使用加密技术来保护数据的传输和存储安全。
此外,服务器端可以采用防火墙等安全措施来保护系统免受恶意攻击。
然而,经典软件体系结构风格(一)也存在一些缺点:1.带宽限制:由于客户端和服务器端之间通过网络进行通信,网络带宽可能成为瓶颈,限制系统的吞吐量和响应速度。
2.可靠性:由于系统依赖于网络通信,如果网络发生故障或者其他问题,系统的可靠性可能会受到影响。
3.负载均衡:在分布式环境下,服务器端可能会出现负载不均衡的问题,导致一些服务器的负载过重,而其他服务器的负载相对较轻。
综上所述,经典软件体系结构风格(一)适用于需要分布式计算和数据处理的场景,能够提高系统的可维护性、可扩展性和性能。
TCP和UDP客户端及服务器端实验报告一、原理1.基于TCP协议的服务器端程序流程:1)创建套接字(socket)2)绑定套接字(bind)3)将套接字设为监听,准备接收客户请求(listen)4)等待客户请求的到来,当请求到来后,接受请求,返回一个对应于此次连接的套接字(accept)5)用返回的套接字与客户端进行通信(send/recv)6)返回,等待另一客户请求7)关闭套接字2.基于TCP协议的客户端程序流程1)创建套接字(socket)2)向服务器发出连接请求(connect)3)和服务器端进行通信(send/recv)4)关闭套接字在服务器端调用accept函数时,程序就会等待客户端调用connect函数发出连接请求,然后接收请求,于是双方就建立了连接,之后,服务器端和客户端就可以利用send和recv函数进行通信了。
3.基于UDP的服务器端编写1)创建套接字(socket)2)绑定(bind)3)等待接收数据(recvfrom)4)关闭套接字4.基于UDP的客户端编写1)创建套接字(socket)2)向服务器发送数据(sendto)3)关闭套接字在所有的套接字编程中第一步都是加载套接字库(WSAStartup)对于每一个WSAStartup函数的成功调用,在最后都要对应一个WSACleanUp调用。
TCP代码实现:首先要建两个工程,不妨设为tcpsrv和tcpclient,分别为客户端和服务器端tcpsrv.cpp//TCP server//listen port 9102//receive string and display it//Visual C++ 6.0#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")#define BUFLEN 1024int main(){SOCKET serversoc;SOCKET clientsoc;SOCKADDR_IN serveraddr;SOCKADDR_IN clientaddr;char buf[BUFLEN];int len;WSADATA wsa;WSAStartup(MAKEWORD(1,1),&wsa);//initial Ws2_32.dll by a processif((serversoc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) <= 0)//create a tcp socket {printf("Create socket fail!\n");return -1;}serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(9102);serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);if(bind(serversoc, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) != 0){printf("Bind fail!\n");return -1;}//start listen, maximum length of the queue of pending connections is 1printf("Start listen...\n");if(listen(serversoc, 1) != 0){printf("Listen fail!\n");return -1;}len = sizeof(SOCKADDR_IN);//waiting for connectingif((clientsoc = accept(serversoc, (SOCKADDR *)&clientaddr, &len))<=0) {printf("Accept fail!\n");return -1;}printf("Connected\n");while(1){//waiting for data receiveif(recv(clientsoc, buf, BUFLEN, 0) <= 0){//some error occurprintf("Close connection\n");closesocket(clientsoc);break;}printf("%s\n",buf);}WSACleanup(); //clean up Ws2_32.dllreturn 0;}相应的客户端程序,tcpclient.cpp//TCP client//client send string to server//Visual C++ 6.0#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")int main(){SOCKET soc;SOCKADDR_IN serveraddr;SOCKADDR_IN clientaddr;unsigned char buf[1024];WSADATA wsa;WSAStartup(MAKEWORD(1,1),&wsa);//initial Ws2_32.dll by a processif((soc = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) <= 0)//create a tcp socket {printf("Create socket fail!\n");return -1;}serveraddr.sin_family = AF_INET;serveraddr.sin_port = htons(9102);serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//connect to serverprintf("Try to connect...\n");if(connect(soc, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) != 0){printf("Connect fail!\n");return -1;}printf("Connected\n");while(1){scanf("%s", buf);//send to serverif(send(soc, buf, strlen(buf)+1, 0)<=0){printf("Error!\n");}}WSACleanup(); //clean up Ws2_32.dllreturn 0;}UDP服务器端://UDP server//listen port 9102//receive string and display it//Visual C++ 6.0#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")#define BUFLEN 1024int main(void){SOCKET soc;SOCKADDR_IN addr;char buf[BUFLEN];int len;WSADATA wsa;WSAStartup(MAKEWORD(1,1),&wsa);//initial Ws2_32.dll by a process memset(&addr, 0, sizeof(addr));if((soc = socket(AF_INET,SOCK_DGRAM,0)) <= 0){printf("Create socket fail!\n");return -1;}addr.sin_family = AF_INET;addr.sin_port = htons(9102);addr.sin_addr.s_addr = htonl(INADDR_ANY);if(bind(soc,(struct sockaddr *)&addr,sizeof(struct sockaddr))!=0){printf("Bind fail!\n");return -1;}len = sizeof(addr);printf("start listen...\n");while(1) {recvfrom(soc, buf, BUFLEN, 0,(struct sockaddr*)&addr, &len);printf("%s\n",buf);}WSACleanup(); //关闭return 0;}客户端://UDP client//client send string to server//Visual C++ 6.0#include <stdio.h>#include <winsock2.h>#pragma comment(lib,"ws2_32.lib")#define BUFLEN 1024int main(void){SOCKET soc;SOCKADDR_IN addr;unsigned char buf[BUFLEN];WSADATA wsa;WSAStartup(MAKEWORD(2,2),&wsa);//initial Ws2_32.dll by a processmemset(&addr, 0, sizeof(addr));if((soc = socket(AF_INET,SOCK_DGRAM,0)) <= 0){printf("Create socket fail!\n");return -1;}addr.sin_family = AF_INET;addr.sin_addr.s_addr = inet_addr("127.0.0.1");addr.sin_port = htons(9102);bind(soc,(struct sockaddr *)&addr,sizeof(addr));while(1) {scanf("%s", buf);sendto(soc, buf, strlen(buf)+1, 0, (struct sockaddr *)&addr, sizeof(addr));}WSACleanup();//clean up Ws2_32.dllreturn 0;}。
一、实验目的通过本次实验,掌握安卓常用控件的基本属性、方法和事件处理,熟悉这些控件在实际应用中的使用方法,提高对安卓界面设计的理解和应用能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Android Studio3.5.33. 手机型号:华为Mate 20三、实验内容本次实验主要涉及以下安卓常用控件:1. TextView2. EditText3. Button4. ImageView5. RadioButton6. CheckBox7. Spinner8. ListView四、实验步骤1. 创建一个新的Android项目,命名为“ControlOperation”。
2. 在布局文件activity_main.xml中添加以下控件:```xml<TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Hello World!"android:layout_marginTop="20dp" /><EditTextandroid:id="@+id/editText1"android:layout_width="match_parent"android:layout_height="wrap_content" android:hint="Enter your name" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Click Me!" /><ImageViewandroid:id="@+id/imageView1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <RadioButtonandroid:id="@+id/radioButton1"android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Male" /><CheckBoxandroid:id="@+id/checkbox1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Subscribe to newsletter" /><Spinnerandroid:id="@+id/spinner1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:entries="@array/countries" /><ListViewandroid:id="@+id/listView1"android:layout_width="match_parent"android:layout_height="wrap_content" />```3. 在strings.xml文件中添加以下字符串资源:```xml<string name="app_name">Control Operation</string> <string name="enter_name">Enter your name</string> <string name="click_me">Click Me!</string><string-array name="countries"><item>China</item><item>USA</item><item>Japan</item></string-array>```4. 在MainActivity.java文件中添加以下代码:```javaimport android.os.Bundle;import android.view.View;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.ScrollView;import android.widget.TextView;import android.widget.CheckBox;import android.widget.Spinner;import android.widget.ListView;import android.widget.ArrayAdapter;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private TextView textView1;private EditText editText1;private Button button1;private ImageView imageView1;private RadioButton radioButton1;private CheckBox checkBox1;private Spinner spinner1;private ListView listView1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);textView1 = findViewById(R.id.textView1);editText1 = findViewById(R.id.editText1);button1 = findViewById(R.id.button1);imageView1 = findViewById(R.id.imageView1);radioButton1 = findViewById(R.id.radioButton1);checkBox1 = findViewById(R.id.checkbox1);spinner1 = findViewById(R.id.spinner1);listView1 = findViewById(R.id.listView1);ArrayAdapter<CharSequence> adapter =ArrayAdapter.createFromResource(this,R.array.countries, yout.simple_spinner_item);adapter.setDropDownViewResource(yout.simple_spinner_dropdown _item);spinner1.setAdapter(adapter);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String name = editText1.getText().toString();Toast.makeText(MainActivity.this, "Hello " + name, Toast.LENGTH_SHORT).show();}});radioButton1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(MainActivity.this, "You selected Male", Toast.LENGTH_SHORT).show();}});checkBox1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (checkBox1.isChecked()) {Toast.makeText(MainActivity.this, "You subscribed to the newsletter", Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "You unsubscribed from the newsletter", Toast.LENGTH_SHORT).show();}}});}}```5. 运行程序,观察效果。
实训五常用窗口组件实训性质:验证性,程序设计实训目的(1) 熟悉常用窗口部件的应用。
(2) 进一步熟悉信号和槽。
实训环境Window XP/Windows 7、VMware player、Linux Red Hat虚拟机、Qt SDK for Linux、Qt Creator。
实训内容(1) 简单界面设计。
实训指导1. 简单界面设计(1) 在个人目录中新建Qt应用程序ex5_1,类名设置为MyUI,基类为QDialog,设置其标题为“用户信息”,界面设计如下。
其中左侧为List Widget组件,包含4个item;右侧为Stacked Widget组件,包含4个页面,要求设置如图边框。
(2) 建立List Widge的currentRowChanged()信号与stackdWidget的setCurrentIndex()槽的关联,使得点击List View上的选项,改变Stacked Widget的页面。
(3) Stacked Widget第1页界面如下,其中头像上的label显示图片,图片文件与工程文件在同一目录下,并需要设置如图的边框;生日右侧为Date Edit组件,要求格式为XXXX年XX月XX日,点击箭头弹出日历组件。
提示:性别使用comboBox组件,获取选择值使用其currentText()函数。
(4) Stacked Widget第2页界面如下,其中入学时间要求通过掩码方式,输入格式为XXXX 年XX月XX日的日期;学历为GroupBox实现的反选按钮;“学制”为SpanBox与Slider 通过信号与槽自动关联,实现拉动滑块改变SpanBox中的数字,二者都设置数值范围为2~5,SpanBox的suffix后缀属性设置为“年”。
(5) Stacked Widget第3页界面如下(6) Stacked Widget第4页界面如下(7) 在myui.cpp中添加代码,实现点击“确定”按钮后,通过qDebug()按下列格式输出相应信息。
简单的客户端、服务器程序洛阳理工学院实验报告1、 熟悉 Microsoft Visual Studio 2008 编程环境。
2、 了解TCP 与UDP 协议,以及它们之间的区别。
3、 了解客户/服务器模型原理。
4、熟悉Socket 编程原理,掌握简单的套接字编程。
实验条件:硬件:PC 机(两台以上)、网卡、已经设定好的以太网环境 软件:Microsoft Visual Studio 2008实验内容:1、编写用TCP 协议实现的Client 端和Server 端程序并调试通过 程序分两部分:客户程序和服务器程序。
工作过程是:服务器首先启动,它创建套接字之后等待客户的连接;客户启动后创建套接字,然后和服务器建立连接;建立连接后,客户接收键盘输入,然后将 数据发送到服务器,服务器收到到数据后,将接收到的字符在屏幕上显示出来。
或 者服务器接收键盘输入,然后将数据发送到客户机,客户机收到数据后,将接收到 的字符在屏幕上显示出来。
程序流程如下:服务器连接建立,accept(返回,得到新的套接 ---------------- >recvt()/send()在套接字sc 上读/写数据,2、编写用UDP 协议实现的Client 端和Server 端程序并调试通过(做完第一个实验 的基础上做该实验)3、编写用TCP 协议实现Client 端与Server 端的一段对话程序。
Server 端根据用户的 输入来提示Client 端下一步将要进行操作。
所用函数及结构体参考:1、创建套接字 ------ socket()功能:使用前创建一个新的套接字格式:SOCKET PASCAL FAR socket(int af, int type, int procotol);服务器Socket()建立流式套接字,返回套接字bin d(),套接字 s 与本地地址相连recvt()/send()在套接字上读/写数据,直closesocket()关闭套接字客户方7、关闭套接字 ----- closesocket()功能:关闭套接字s格式:BOOL PASCAL FAR closesocket (SOCKET s);8、WSADATA 类型和 LPWSADATA 类型WSADATA 类型是一个结构,描述了 Socket 库的一些相关信息,其结构定义如下:typedef struct WSAData {WORD wVersio n; WORD wHighVersio n; char szDescriptio n[ WSADESCRIPTION_LEN+1];szSystemStatus[WSASYS_STATUS_LEN+1]; iMaxSockets; iMaxUdpDg; IpVe ndorl nfo; typedef WSADATA FAR *LPWSADATA; 值得注意的就是wVersion 字段,存储了 Socket 的版本类型。
J2EE应用网络客户端及组件概述当基于浏览器的网络客户端与J2EE应用程序通信时,它是通过服务方的称为网络组件的对象实现的。
有两种类型的网络组件:Java Servlet 和JSP。
Servlet是Java编程语言的类,它能够动态处理请求并响应。
JSP页面是基于文本的能作为Servlet运行,但它能够以更自然的方式创建动态内容。
尽管Servlet和JSP可以交互使用,但他们各有各的优点,Servlet适用于功能控制管理,例如,分派请求及处理非文本数据;JSP页面则适合于产生基于文本的标记语言如HTML,SVG,WMLXML。
本文描述了为网络客户端打包、配置、部署的过程,第10章及11章将讲述如何开发这些组件。
许多JSP技术的特点取决于Servlet技术,因此你必须熟练那部分内容,哪怕你不打算写Servlet。
多数J2EE客户端都使用HTTP协议,支持HTTP是网络组件的主要部分。
在附录A有关于HTTP协议的简单小结。
网络客户端的生命周期网络客户端部分的服务端由网络组件组成,静态的资源文件如图像、帮助类、及库。
J2EE 平台提供了数多服务,如提高网络组件的能力以使程序易于开发。
然而,因为考虑到这些服务,处理创建及运行网络客户端的过程不同于传统的单一的Java类。
网络组件运行在称为网络容器的环境中。
网络容器提供如请求分派,安全,并发,生命周期管理的服务。
它也为网络组件提供J2EE平台的API入口如:命名,事务及电子邮件。
在它运行之前,网络客户端必须打包为网络应用包(WAR),一各类似于JAR的包。
某些网络客户端的行为再它部署之后会被配置。
配置信息包含在XML格式的称为网络应用部署描述符的文件。
当你使用J2EE软件开发包部署工具创建网络客户及组件时,它会自动的通过部署工具输入的数据产生或更新部署描述符。
你也可以根据Java Servlet规范手工创建部署符。
这个创建,部署及运行网络客户程序的过程可以总结如下:1.开发网络组件代码;2.打包这些网络组件及任何静态资源及组件引用的帮助类;3.部署应用程序;4.进入引用网络客户端的URL开发网络组件代码在第10、11章中,步骤2到4将在下几节中展开,下面是一个Hello,world型程序,它让用户在一表单中输入名字,在提交后接着显示问候:部署网络组件代码的部分将在后面的相关章节中介绍。
列举几个小程序常用组件及方法
1.按钮组件:用于接收用户的点击事件,常用方法包括绑定点击事件、设置按钮文本和样式等。
2. 列表组件:展示一组数据,常用方法包括设置列表数据、绑定点击事件、设置列表项样式等。
3. 输入框组件:用于接收用户输入的文本,常用方法包括设置输入框默认值、绑定输入事件、获取输入值等。
4. 图片组件:用于展示图片,常用方法包括设置图片地址、设置图片大小及样式等。
5. 标题组件:用于展示标题,常用方法包括设置标题文本、设置标题样式等。
6. 导航组件:用于页面之间的跳转,常用方法包括设置页面路径、设置跳转方式等。
7. 弹窗组件:用于展示提示信息或询问用户是否进行操作,常用方法包括设置弹窗内容、设置弹窗样式、绑定点击事件等。
8. 日期选择器组件:用于选择日期,常用方法包括设置日期范围、获取选择的日期等。
9. 轮播图组件:用于展示多张图片或内容,常用方法包括设置轮播图数据、设置轮播图样式等。
10. 滚动组件:用于展示滚动内容,常用方法包括设置滚动内容、设置滚动样式、绑定滚动事件等。
- 1 -。
实验一 SCOOT系统客户端软件安装及配置实验1 目的与要求:1、通过实验教学,使学生能验证和巩固课堂理论教学所学的理论知识,使理论与实践,理性与感性有机的结合起来。
2、通过实验教学,使学生学习SCOOT实时自适应交通控制系统的系统架构、工作流程及软件安装配置方法,掌握SCOOT系统运维过程中最常用的几个基本命令。
2 原理与方法:1)学习SCOOT实时自适应交通控制系统的系统架构、工作流程及软件安装配置方法。
2)知识点:SCOOT实时自适应交通控制系统简介:SCOOT系统是通过连续检测路网交通需求来优化每个交叉口的配时方案,使交叉口的延误和停车次数最小的动态、实时、在线信号控制系统。
SCOOT交通信号控制系统的教学版采用的服务器架构都是C/S架构,即客户端/服务器模式,控制系统的核心软件(包括控制模型、优化算法、数据存储等部分)安装在服务器端,客户端只需要安装一个远程登陆软件,可以实现多人同时访问scoot控制系统的服务器端。
系统网络结构:如下图所示,对应实验室的环境,服务器是在服务器机柜里的一台服务器,IP地址是192.168.0.200,客户端是10台台式机,IP地址是通过无线路由器自动分配的192.168.0.100~199,以确保IP地址互不冲突。
另外有4台西门子MCU-6信号机,IP地址分别是192.168.0.10、192.168.0.11、192.168.0.12、192.168.0.13,通过网线直接接入服务器。
这样,服务器、客户端、信号机都在一个子网内,首先保证网络通信正常,才能进行SCOOT系统实验。
3)上机操作并撰写实验报告。
3 设备、仪器和工具信号机、服务器、交换机、计算机、网线等线缆4 实验内容与步骤1)网络连通性测试用PING命令测试网络的连通性。
该命令通过发送数据包到对方主机,再由对方主机将该数据包返回来,以测试网络的连通性。
PING命令的测试成功,不仅表示网络的硬件连接是有效的,而且也表示操作系统的网络通信模块的运行是正确的。
第一部分传输介质制作和使用实验一双绞线标准及制作一、实验目的熟练掌握网络传输介质(双绞线)和连接器件(RJ-45水晶头)的连接方法,并学会水晶头插座的制作方法,掌握传输介质连通性测试的方法。
二、实验内容1.双绞线内部结构掌握;2.568A和568B线序排列方式;3.双绞线连通性测试;4.RJ-45水晶头插座的制作方法。
三、实验材料及工具1.一条五类双绞线;2.两个水晶头(RJ-45头);3.压线钳;4.双绞线连通测试仪;5.卡线刀;6.卡座。
四、实验步骤:(一)制作双绞线准备知识1、以太网中RJ-45连接器的针脚:在双绞线以太网中,其连接导线只需要两对线:一对线用于发送,另一对线用于接收。
但现在的标准是使用RJ-45连接器。
这种连接器有8根针脚,一共可连接4对线。
对于10BASE-T以太网的确只使用两对线。
这样在RJ-45连接器中就空出来4根针脚。
到对100BASE-T4快速以太网,则要用到4对线,即8根针脚都要用到。
顺便指出,采用RJ-45而不采用电话线的RJ-11也是为了避免将以太网的连接线插头错误地插进电话线的插孔内。
另外,RJ-11只有6根针脚,而RJ-45有8根针脚。
这两种连接器在形状上的区别见下图所示。
图1.12、RJ-45连接器对8根针脚的编号的规定RJ-45连接器包括一个插头和一个插孔(或插座)。
插孔安装在机器上,而插头和连接导线(现在最常用的就是采用无屏蔽双绞线的5类线)相连。
EIA/TIA制定的布线标准规定了8根针脚的编号。
如果看插孔,使针脚接触点在上方,那么最左边是①,最右边是⑧(见下图)。
图1.2如果看插头,将插头的末端面对眼睛,而且针脚的接触点插头的在下方,那么最左边是①,最右边是⑧(见下图)。
请注意,有的文献将插头编号的①指定为最右边的针脚,这是因为他们将插头的针脚接触点画在上方(和我们给出的图正好旋转了180度)。
但实际上指的还图1.3是同样的针脚中只使用两对导线。
实验1 常用客户端组件
【实验目的】
了解企业管理器、查询管理器的功能界面
熟悉系统数据库的结构
熟悉SQL Server 2000给出的样例数据库内容。
【实验内容】
一、练习企业管理器的使用
●使用企业管理器控制SQL Server服务。
●使用企业管理查看当前数据库实例的配置数据。
(1)打开企业管理器,展开【SQL Server组】节点。
在该节点上右击,将弹出如图【1】所示的菜单。
从该菜单上可以看出目前用户可以对实例local进行的操作。
图【1】操作实例的菜单选项图【2】SQL Server 实例级别的配置参数
(2)单击如图【1】所示菜单命令中的【断开】,则将断开当前企业管理器这个应用和SQL Server服务器之间的连接通信,这时,local以下的所有节点都将收缩。
(3)重新展开local实例节点,可以感觉得到明显的滞后,这是因为企业管理器必须重新建立与SQL Server服务器之间的连接。
(4)单击如图【1】所示菜单命令中的【暂停】,可以暂停当前SQL Server 服务。
(5)单击如图【1】所示的菜单命令中的【停止】,可以停止当前正在运行着的SQL Server 服务。
(6)单击如图【1】所示菜单命令中的【启动】,可以重新启动当前已经停止的SQL Server 服务。
(7)单击如图【1】所示菜单命令中的【属性】,则将弹出如图【2】所示的对话框。
该对话框定义了许多SQL Server实例级别的配置参数。
从这个对话框里,也可以修改这些配置参数。
二、练习查询分析器的使用
●熟悉查询分析器的环境
●使用查询分析器进行查询语句的编写
●练习模板的使用
(1)请使用【企业管理器】的工具菜单,进入【查询分析器】界面。
(2)请在查询分析器的右边【脚本编辑器】里,输入如下的命令:
USE pubs
GO
sp_help authors /*sp_help是查看表的定义的存储过程*/
GO
SELECT *
FROM authors
GO
(3)请按Ctrl+F5键对该语句进行编译。
(4)请按F5键执行该语句,返回结果如图【3】所示。
图【3】程序执行返回后的结果
(5)仿照上面的步骤,输入并执行如下的语句:
USE northwind
GO
SELECT companyname , city ,region
FROM Suppliers
GO
请查看返回结果是什么?
(6)请按CTRL+L键,则系统返回查询计划分析,如图【4】所示。
图【4】查看查询分析计划图【5】创建一个新的视图
(7)请在查询分析器的左边(左下角有两个选项卡,选择“模板”),将视图切换到【模板】状态。
(8)展开Create View视图节点。
(9)双击Create View Basic Template,将弹出一个基本的视图创建窗口,窗口中已经存在了一些系统自动写好的语句。
(10)修改这些语句, 如图【5】所示,并按F5执行,就创建一个命名为myviewtest_2的视图。
(11)请在查询分析器的左边,将视图切换到【对象】状态。
(如果看不到对象浏览窗口,请按F8,F8是左边“对象浏览器”窗口是否显示的开关键)
(12)在Northwind数据库中查找myviewtest_2视图。
如图【6】所示。
图【6】查找已创建的视图
(13)查询该视图,输入如下的语句:
USE Northwind
GO
SELECT *
FROM myviewtest_2
GO
(14)执行该语句,返回结果应如图【7】所示。
图【7】系统返回结果
(15)请单击查询分析器各节点,并在各节点上右击,查看查询分析器的细节特征。
三、熟悉系统数据库的结构
请在企业管理器中,依次打开所有四个系统数据库:master, model, msdb, tempdb, 并查看其中所有的数据对象,包括:表、视图、存储过程、用户、角色、规则、默认值、用户定义的数据类型、用户定义的函数和全文目录。
(1)请在企业管理器中展开master数据库节点。
(2)请显示出master数据库中所有的表。
(3)从这些表中找出名为“sysservers”的表,这个表中存储有当前SQL Server环境中的实例描述。
在目前我们的环境中,只有一个local实例存在,所有该表中的数据应该只有一行。
(4)在该表上,右击,将进入【打开表】子菜单,选择【返回所有行】。
(5)系统返回结果应如图【8】所示。
图【8】查看系统表的内容
(6)请按照这样的方法查看其他表的内容。
四、熟悉样例数据库的内容
请在企业管理器中,依次打开所有两个样例数据库:pubs和Northwind,并查看其中所有的数据对象,包括:表、视图、存储过程、用户、角色、规则、默认值、用户定义的数据类型、用户定义的函数和全文目录。
【实验拓展】
借助其他参考资料,了解SQL Server其他客户端组件的作用以及基本功能。