利用C#串口操作类实现异步数据接收

利用C#串口操作类实现异步数据接收
利用C#串口操作类实现异步数据接收

// C#异步数据接收串口操作类

// dyj057@https://www.360docs.net/doc/f013147356.html,

using System;

using System.Runtime.InteropServices;

///

/// (C)2003-2005 C2217 Studio 保留所有权利

///

/// 文件名称: IbmsSerialPort.cs

/// 文件ID:

/// 文件说明:

/// 封装动态链接库IbmsSerialPort.dll的功能,提供在.NET环境中

/// 串口异步接收和发送数据的功能。

///

/// 当前版本: 1.0

///

/// 作者: 邓杨均

/// 创建日期: 2005-2-2

/// 最后修改日期: 2005-2-2

///

/// 历史修改记录:

///

///

namespace Ibms.Tool.IO

{

///

/// 当串口接收到数据时,会产生一个事件。

/// SPRecvDataArgs就是该事件的参数,参数中的RecvData包含接收到的数据。

/// 使用方法:

///

public class SPRecvDataArgs:EventArgs

{

///

/// 接收到的数据组成的字节数组

///

private byte[] recvData;

///

/// 构造函数,需要一个包含数据的byte[]作为初始化参数来实例化SPRecvDataArgs ///

/// 接收到的数据

public SPRecvDataArgs(byte[] recvData)

{

if( recvData == null)

{

throw(new ArgumentNullException());

}

this.recvData = recvData;

}

///

/// 返回接收到的数据内容

///

public byte[] RecvData

{

get

{

return recvData;

}

}

}

///

/// 封装动态链接库IbmsSerialPort.dll的功能,提供在.NET环境中异步

/// 串口接收和发送功能。特别实现的是异步通过信号自动接收数据的模式。///

public class IbmsSerialPort:IDisposable

{

#region 平台调用声明代码

///

/// 声明IbmsSerialPort.dll的Ibms_OpenPort函数

///

/// 串口号

/// 波特率

///

[DllImport("IbmsSerialPort.dll")]

public static extern IntPtr Ibms_OpenPort(int nPort, int nRate);

///

/// 声明IbmsSerialPort.dll的Ibms_Close函数

[DllImport("IbmsSerialPort.dll")]

public static extern void Ibms_Close( IntPtr port);

///

/// 声明IbmsSerialPort.dll的Ibms_SendData函数

///

///

///

///

[DllImport("IbmsSerialPort.dll")]

public static extern bool Ibms_SendData( IntPtr port, byte[] data,int nDataSize);

///

/// 声明IbmsSerialPort.dll的Ibms_SetFuncHandle函数

///

///

[DllImport("IbmsSerialPort.dll")]

public static extern void Ibms_SetFuncHandle( IntPtr port, HandleFunc handDataFunc); #endregion

#region 定义字段

///

/// 定义数据处理委托,作为API的函数指针传入动态链接库

///

public delegate void HandleFunc(IntPtr pData, int nDataSize);

///

/// 定义数据接收事件的原型

///

public delegate void RecvData(object sender,SPRecvDataArgs e);

///

/// 定义数据接收事件

///

public event RecvData OnRecvData;

///

/// 串口处理接收数据的委托

///

private HandleFunc _handleDataFunc;

/// 串口的编号,从1开始的整数,最大255

///

private int port;

///

/// 串口所支持的波特率,必须是标准波特率之一///

private StanderdRate rate;

///

/// 串口当前的打开状态

///

private bool openStatus=false;

///

/// 串口句柄

///

private IntPtr portHandle;

#region 定义标准的串口波特率

///

/// 标准的波特率

///

public enum StanderdRate

{

R50=50,

R75=75,

R110=110,

R150=150,

R300=300,

R600=600,

R1200=1200,

R2400=2400,

R4800=4800,

R9600=9600,

R19200=19200,

R38400=38400,

R57600=57600,

R76800=76800,

R115200=115200

};

#endregion

#endregion

#region 定义方法

///

/// 构造函数

///

public IbmsSerialPort()

{

portHandle = (IntPtr)0;

_handleDataFunc = new HandleFunc(OnDllRecvData); }

///

/// 打开串口

///

/// 串口号

/// 波特率

/// /// 抛出应用程序异常,包换错误描述

public void Open(int nPort, StanderdRate nRate)

{

if(nPort > 255 || nPort < 0)

{

throw(new ArgumentOutOfRangeException());

}

port = nPort;

rate = nRate;

portHandle = Ibms_OpenPort( port, (int)rate );

if( (IntPtr)0 == portHandle )

{

throw( new ApplicationException("打开串口失败")); }

//注册函数指针

Ibms_SetFuncHandle( portHandle, _handleDataFunc );

openStatus = true;

}

///

/// 关闭串口

///

public void Close()

{

if( openStatus )

{

Ibms_Close( portHandle);

}

openStatus = false;

}

///

/// 发送数据

///

/// 数据内容

/// 抛出应用程序异常,包换错误描述

public void SendData( byte[] data )

{

if( !openStatus )

{

throw( new ApplicationException("串口没有打开,发送数据失败") );

}

if( !Ibms_SendData( portHandle, data, data.Length ) )

{

throw( new ApplicationException("串口发送数据失败") );

}

}

///

/// 处理接收到的串口数据

///

/// 串口数据接收缓冲区首地址

/// 数据大小,一般数据大小不超过2K

unsafe protected void OnDllRecvData(IntPtr pUnhandleData, int nDataSize)

int dataSize= nDataSize ;

byte * pData =(byte *) pUnhandleData;

byte[] data = new byte[dataSize];

//复制数据到byte数组

for(int i=0; i

{

data[i]= pData[i];

}

//激发事件

OnRecvData( this, new SPRecvDataArgs(data) ); }

#endregion

#region 定义属性

///

/// 返回当前的串口号

///

public int Port

{

get

{

return port;

}

}

///

/// 返回当前串口的波特率

///

public StanderdRate Rate

{

get

{

return rate;

}

}

///

/// 返回当前串口的状态

///

public bool OpenStatus

{

get

{

return openStatus;

}

}

#endregion

#region 非托管资源的及时释放

///

/// 因为包含了非托管的资源(必须实现IDisposable接口/// 在使用完该类的时候,必须记得调用Dispose(),回收系统资源

///

///

/// 方法1

/// {

/// SerialPort port =new SerialPort();

/// ...

/// //在try-catch-finaly的finaly中释放资源

///

/// port.Dispose();

/// }

///

/// 方法2

/// using( SerialPort port = new SerialPort())

/// {

/// ...

/// }

/// 变量超出作用域时会自动调用其Dispose()方法

///

///

///

~IbmsSerialPort()

{

Dispose( false );

}

protected virtual void Dispose( bool disposing )

{

if( disposing )

{

//清理托管的对象

}

//清理非托管的资源

Close();

}

#region IDisposable 成员

public void Dispose()

{

// TODO: 添加SerialPort.Dispose 实现

Dispose( true );

GC.SuppressFinalize(this);

}

#endregion

#endregion

}

}

sp.DataReceived += new SerialDataReceivedEventHandler(this.SerialPort_DataReceived);

SQL Server 2008 数据库案例教程课后习题答案

《SQL Server 2008数据库案例教程》练习题及模拟试卷答案 第1章 一、判断题 1. 数据库技术是是计算机数据处理与信息管理系统的核心。(√) 2. 数据是用于描述现实世界中具体事物或抽象概念,可存储的数字符号。(×) 3. 数据库是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。(√) 4. 数据库管理系统是一个按数据结构来存储和管理数据的服务器管理系统。(×) 5. 关系数据库,是建立在关系模型基础上的数据库。(√) 二、单选题 1. 数据(Data)是一些可存储并具有明确意义的(A) A. 符号 B.图形 C.文字 D.数字 2. 人工阶段计算机用于数值计算,没有操作系统及管理数据的软件。这一阶段的年代是(C) A. 19世纪80年代 B. 20世纪20年代 C.20世纪50年代 D. 20世纪80年代 3. 在网页中常用的图像格式是(D) A..bmp和.jpg B..gif和.bmp C. .png和.bmp D. .gif和.jpg 4.数据库系统的重要特征是什么?(D) A. 数据的独立性和动态性 B.数据的静态性和独立性 C.数据的动态性和共享性 D.数据的独立性和共享性 三、多选题 1.与数据库技术密切相关的基本概念有(ABCD) A. 数据 B. 数据库 C. 数据库管理系统 D. 数据库系统 2.数据库可分为哪几种类型?(ABC) A. 关系型数据库 B. 网状数据库 C. 层次数据库 D.树形数据库 3. DBMS提供数据操作语言DML,为用户提供了哪些操作?(ABCD) A.数据的追加B.数据的删除C.数据的更新D.数据的查询 4.DBMS要分类组织、存储和管理各种数据,包括哪些内容?(ABC) A. 数据字典 B. 用户数据 C. 存取路径 D.服务器 5. 目前,DBMS常见品牌有哪些公司?(ABC) A.微软公司的SQL Server B.IBM公司的DB2 C.甲骨文公司的ORACLE D.索尼公司的MySQL 四、填空题 1.数据库(管理)技术经历了人工管理阶段和文件管理阶段。 2.文件系统不提供对任意部分数据的(快速)访问 3.关系数据库,是建立在关系(模型)基础上的数据库。 4.实体-联系模型(简称E-R模型)是由P.P.Chen于(1976)年首先提出的。

实验一ACCESS数据库及表的操作

可编辑可修改 实验一数据库及表的操作 实验类型:验证性实验课时:_6_学时指导教师: _______________ 时间:2013年月日课次:第___________________ 节教学周次:第________ 周 实验分室:_______________ 实验台号:__________ 实验员:_________________ 一、实验目的 1.掌握数据库的创建及其它简单操作 2.熟练掌握数据表建立、数据表维护、数据表的操作 二、实验内容与要求 1.数据库的创建、打开、关闭 2.数据表的创建:建立表结构、设置字段属性、建立表之间关系、数据的输入 3.数据表维护:打开表、关闭表、调整表外观、修改表结构、编辑表内容 4?数据表的操作:查找替换数据、排序记录、筛选记录 三、实验步骤 案例一:创建数据库 1.创建空数据库 要求:建立“教学管理.accdb ”数据库,并将建好的数据库文件保存在“实验一”文件夹中。 操作步骤:

IS 1 丿小? e 叮亍 Micrtilitil ftfdwvi 口 可审业 a 站 j-t 4审时 OffiCfLC WF gm ■ *陆 (2)单击険'I 按钮,在打开的“新建数据库”对话框中,选择数据库的保存位置,在“ 件夹中,单击“确定”按钮,如图 1-2所示。 (3)这时返回到access 启动界面,显示将要创建的数据库的名称和保存位置,如果用户未提供文件 扩展名,access 将自动添加上。 (4 )在右侧窗格下面,单击“创建”命令按钮,如图 1-1所示。 (5)这时开始创建空白数据库,自动创建了一个名称为表 1的数据表,并以数据表视图方式打开这 个表1,如图1-3所示。 J 曰归 图1-1 创建教学管理数据库 (1 )在Access 2010启动窗口中,在中间窗格的上方,单击“空数据库” ,在右侧窗格的文件名文本 框中,给出一个默认的文件名“” 。把它修改为“教学管理”如图 1-1所示。 实验一”文

用T-SQL语句完成创建和管理数据库操作练习

-创建数据库语句语法: CREATE DATABASES 据库名 [ON [PRIMAR Y] {(NAME^据文件的逻辑名称, FILENAME‘数据文件的路径和文件名’,(要包含文件扩展名)SIZE二数据文件的初始容量,(不能小于Model数据库的初始文件大小) MAXSIZE二数据文件的最大容量, FILEGROWTH数据文件的增长量)}[,…n] LOG ON {(NAME=事务日志文件的逻辑名称, FILENAMES务日志文件的物理名称', SIZE=事务日志文件的初始容量, MAXSIZE=事务日志文件的最大容量, FILEGROWTH事务日志文件的增长量)儿…n]] 判断同名的数据库是否存在: IF EXISTS (SELECT FROM master..sysdatabases WHERE name =' 数据库名')

DROP DATABASE数据库名 GO 修改数据库操作语句: ALTER DATABAS数据库名 {[add file 文件描述][to filegroup 文件组名] 新增数据文件I [add log file 文件描述] 新增日志文件 I [remove file 逻辑文件名]删除数据库文件 I [add filegroup 文件组名]新增文件组 I [remove filegroup 文件组名] 删除文件组 I [modify file 文件修改内容描述]修改数据文件属性} 查看数据库文件属性 EXECSp_helpfile 系统存储过程,用于查看数据库有哪些文件及文件属性。 删除数据库 Drop database数据库名称 分离数据库 EXEC Sp_detach_db 数据库名称 附加数据库 CREATE DATABASE 据库名 ON PRIMAR Y (FILENAME=') 说明:附加数据库只需指定数据库的主数据文

sql数据库示例,适合初学者

一、数据库概述 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。(文件系统) 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。 数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。 数据库:存储、维护和管理数据的集合。 二、数据库的安装与配置 * 安装 * 参照图解 * 一路下一步 * 配置 * 参照图解 * 到选择字符集时停 登录Mysql: mysql -u root -p abc * 卸载 1.停止mysql服务net stop mysql 启动mysql服务net start mysql 2.卸载mysql 3.找到mysql 安装目录下的my.ini datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/" * 修改密码 运行cmd * 安装成功了打开cmd --> mysql -uroot -p你的密码 * 修改mysql root用户密码 1) 停止mysql服务运行输入services.msc 停止mysql服务 或者cmd --> net stop mysql 2) 在cmd下输入mysqld--skip-grant-tables 启动服务器光标不动(不要关闭该窗口) 3) 新打开cmd 输入mysql -u root -p 不需要密码

c语言连接数据库mysql

下面是C语言连接mysql数据库简单例子: 编译方式: gcc -I /usr/local/mysql/include/ -L /usr/local/mysql/lib/ -l mysqlclient select.c -o select 源码: #include #include #include #include "/usr/local/mysql/include/mysql.h" int main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "192.168.1.99"; char *user = "test"; char *password = "test_passwd"; char *database = "count"; double tvalue1 = 0.93; char st[123]; time_t s; s = time((time_t*)NULL ); sprintf(st, "%d", s); conn = mysql_init(NULL); if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } char sql[1024]="SELECT * FROM money_change WHERE c_datetime <= "; strcat(sql,st); strcat(sql,"-3000 AND c_datetime > "); strcat(sql,st); strcat(sql,"-5000 AND c_type = 0 UNION ALL SELECT * FROM money_change WHERE

Access上机操作题——报表操作

Access上机操作题之二十 ——创建报表㈠ 一、使用工具栏中“新对象:自动报表”按钮创建纵栏式报表: ●创建“学生”表的纵栏式报表,其操作步骤如下: ①打开“教学”数据库,选择“表”对象。 ②选择“学生”数据表。 ③单击工具栏中的“新对象:自动报表”按钮,选择“自动报表”选项。 ④保存此报表。 ●窗体转换为报表: 将“教学”数据库中的“学生”窗体转换为报表。其操作步骤如下: ①打开“教学”数据库,选择“窗体”对象。 ②右击“学生”窗体名,选择“另存为”命令。 ③在“另存为”对话框中的“保存类型”下拉按钮中,选择“报表”选项。 ④单击“确定”按钮。 ●学生操作训练 ⑴创建“课程”表的纵栏式报表。 ⑵创建“成绩”表的纵栏式报表。 ⑶在“职工基本情况”数据库中,创建一个基于“职工”数据表的窗体,然后再将转换为报表。 二、使用向导创建单表报表: 1、自动创建纵栏式报表: ⑴根据“学生”表创建纵栏式报表,其操作步骤如下: ①选择“插入”菜单中的“报表”命令,或选择“报表”对象后,再单击“新建”按钮。 ②选择“自动创建报表:纵栏式”选项,并选择数据来源为“学生”表后,单击“确定”按钮。 ③保存此报表。 注:自动创建表格式报表和数据表式报表的操作方法同此相似。 学生操作训练: ⑵根据“课程”表,分别创建一个纵栏式、表格式报表。 ⑶根据“成绩”表,分别创建一个纵栏式、表格式报表。 2、使用“报表向导”创建报表: ⑴使用“报表向导”建立一个基于“学生”表中“学号、姓名、性别、出生日期”等字段的简单报表。其操作步骤如下: ①选择“报表”对象,双击“使用向导创建报表”选项。 ②在“表/查询”下拉列表中选择报表的数据来源——“学生”表,然后选择在报表中要显示的字段名:学号、姓名、性别、出生日期等,最后单击“下一步”按钮。 ③设置分组:确定是否添加分组级别。暂时不添加,则直接单击“下一步”按钮。 ④设置记录的排序次序。暂时不设置排序,则直接单击“下一步”按钮。

ACCESS数据库的基本操作

ACCESS数据库的基本操作 一、建立数据库 ACCESS数据库是一个独立的文件,其扩展名为.MDB。它所包含的对象:表(Table) 、查询(Query) 、窗体、报表、数据访问页、宏、模块等。 一个数据库可以拥有多个表、多个查询及多个其它对象,而表是整个数据库的基础。 创建数据库的二种方式: 1.启动Access 2002时创建数据库 “开始,程序,Microsoft access”→“空access 数据库”→指定保存位置和文件名 2.进入Access 2002后创建数据库 “文件,新建”→“常用”选项卡上选择“数据库”→指定保存位置和文件名→“创建” 二、建立表 创建表的三种方式: 1. 使用表设计器创建表结构 2. 使用“表向导”(利用示例表)创建表结构 3. 通过输入数据直接创建表结构和记录

重点掌握:使用表设计器 创建表的步骤: 1、设计表结构 数据库窗口“表”面板→双击“使用设计器创建表”→打开“设计视图”→设计表结构→“关闭”设计视图→输入表名。 2、输入表记录 双击表名打开“数据表视图”→输入表记录→“关闭”数据表视图。 关于表的说明: 1)表的三要素:表名、记录(行)、字段(列) 2)表的定义项:表名、字段名、字段数据类型、字段属性和表的主关键字。表的可选定义项:字段说明、表的属性。 3)表的命名:字母、汉字、数字、空格和除了句号、叹号、方括号等字符以外字符的任何组合。(在同一个数据库中,表名不能重复) 关于字段的说明: 1)字段名:每一个字段都必须有一个唯一的名字。 ①字段名长度不超过64个字符。 ②字段名可以包含字母、汉字、数字、空格(但空格不能为首字符), 还可以包含大部分标点符号。 ③字段名不能出现句号(。)、叹号(!)、方括号([ ])。 ④在同一张表中,字段名不能重复使用。

一个完整的数据库示例--说明

一、表的结构及完整性约束 新建一个数据库jxsk,包括S、C、SC、T、TC五个表,结构如下:C表: S表: SC表: T表:

TC表: 二、安全性控制及视图机制 1、三类角色:depart、teacher、student depart的权限: teacher的权限:

student的权限: 2、有2个院系用户:d_jsj,d_xx,同属于depart角色。

有1个教师用户:t ,属于teacher 角色。

有一个学生用户:s,属于student角色。 3、创建计算机系教师视图t_view_jsj、计算机系学生视图s_view_jsj,并授予d_jsj 用户在这两个视图上的select、delete、update、insert权限。 计算机系教师视图t_view_jsj: create view t_view_jsj as select tno,tn,sex,age,prof,sal,comm,dept from t where dept='计算机' with check option

授予d_jsj用户在计算机系教师视图t_view_jsj 上的select、delete、update、insert 权限: grant select,update,delete,insert on t_view_jsj to d_jsj 计算机系学生视图t_view_jsj: create view s_view_jsj as select sno,sn,sex,age,dept,resume,native from s where dept='计算机' with check option 授予d_jsj用户在计算机系学生视图s_view_jsj 上的select、delete、update、insert 权限: grant select,update,delete,insert on s_view_jsj to d_jsj …… 4、创建一个视图,显示学号,姓名,院系,课程名,成绩。 create view score_view(学号,姓名,院系,课程名,成绩) as select s.sno,sn,dept,cn,score from s,sc,c where s.sno=sc.sno and https://www.360docs.net/doc/f013147356.html,o=https://www.360docs.net/doc/f013147356.html,o 三、完整性控制--触发器、规则 1、要求当删除C表中某课程信息时,同时删除SC和TC中与此课程相关的记录。create trigger c_delete_trigger on c after delete as delete from sc where cno in (select cno from deleted) delete from tc where cno in (select cno from deleted) go

数据库上机操作题

Access 上机操作题(共5题,3分/题) 数据库上机操作题 1. 建立学生管理数据库,添加相应数据库表,并建立表间关系 (1)打开Access2010,建立“学生管理”数据库,并添加三个表,分别是Student、Course 和Grade。 Student Grade

(2)在Student表中以“学号”建立主键,在Course表中以“课程号”建立主键 (3)以Student与Grad表按“学号”字段建立关系,以Grad表“课程编号”字段与Course 表中“课程号”字段建立关系。 2. 根据已有学生数据库建立简单查询 (1)按照操作题1中的Student、Course和Grade三个表,建立综合查询,要求包括三个表中无重复的所有字段,并将查询结果存到新表stud中。 (2)按照学号建立参数查询,查询学号是12102105学生的基本情况和选课情况。 (3)按照分数的降序排列显示学生所有信息。 (4)将学生成绩表的Grage成绩按80%修改。 3. 基于已有的学生管理数据库,建立高级查询 (1)创建一个选择查询,查询并显示学生的平均分数,所在班级名称。 (2)显示所有分数高于80分的学生姓名所有信息。 (3)创建一个选择查询,查询开课时间在2013年中121021班级学生的选课情况。 (4)在Grade表中添加“等级”字段,将成绩在80分或以上的学生在等级字段中添加“优良”标识。 4. 建立学生基本情况及成绩情况窗体 (1)基于建立的学生管理数据库,按照性别添加照片字段数据(有照片文件夹) (2)利用自动创建窗体,所建窗体命名为“学生基本信息”; (3)利用窗体设计修改窗体,调整窗体位置,添加背景图片(有图片文件) (4)添加4个导航按钮,分别指向“下一项记录”、“前一项记录”、“最后一记录”和

用T-SQL语句完成创建与管理数据库操作练习

·创建数据库语句语法: CREATE DATABASE 数据库名 [ON [PRIMARY] {(NAME=数据文件的逻辑名称, ‘数据文件的路径和文件名’, (要包含文件扩展名) SIZE=数据文件的初始容量,(不能小于Model数据库的初始文件大小) MAXSIZE=数据文件的最大容量, 数据文件的增长量)}[,…n] LOG ON {(NAME=事务日志文件的逻辑名称, '事务日志文件的物理名称', SIZE=事务日志文件的初始容量, MAXSIZE=事务日志文件的最大容量, 事务日志文件的增长量) }[,…n]] 判断同名的数据库是否存在: IF EXISTS (SELECT * FROM master..sysdatabases WHERE name = '数据库名') DROP DATABASE 数据库名 GO

修改数据库操作语句: ALTER DATABASE 数据库名 {[add file 文件描述] [to 文件组名] 新增数据文件 |[add log file 文件描述] 新增日志文件 |[remove file 逻辑文件名] 删除数据库文件 |[add 文件组名] 新增文件组 |[remove 文件组名] 删除文件组 |[modify file 文件修改内容描述] 修改数据文件属性} 查看数据库文件属性 EXEC sp_helpfile 系统存储过程,用于查看数据库有哪些文件及文件属性。 删除数据库 Drop database 数据库名称 分离数据库 EXEC Sp_detach_db 数据库名称 附加数据库 CREATE DATABASE 数据库名 ON PRIMARY (’’) 说明:附加数据库只需指定数据库的主数据文件。 FOR ATTACH 如果移动过数据库文件,则需要指出所有移动过的文件。 用存储过程也可以附加数据库:

用TSQL语句完成创建与管理数据库操作练习

CREATE DATABASE 数据库名 [ON [PRIMARY] {(NAME= 数据文件的逻辑名称, FILENAME=‘ 数据文件的路径和文件名 ' , (要包含文件扩展名)SIZE= 数据文件的初始容量,(不能小于Model 数据库的初始文件大小) MAXSIZE= 数据文件的最大容量, FILEGROWTH二数据文件的增长量)}[,…n] LOG ON {(NAME= 事务日志文件的逻辑名称, FILENAME=' 事务日志文件的物理名称', SIZE= 事务日志文件的初始容量, MAXSIZE= 事务日志文件的最大容量, FILEGROWTH二事务日志文件的增长量)}[,…n]] 判断同名的数据库是否存在: IF EXISTS (SELECT * FROM master..sysdatabases WHERE name = '数据库名') DROP DATABASE 数据库名 GO

ALTER DATABASE 数据库名 [add file 文件描述] [to filegroup 文件组名] 新增数据文件[add log file 文件描述] 新增日志文件 [remove file 逻辑文件名] 删除数据库文件 [add filegroup 文件组名] 新增文件组 [remove filegroup 文件组名] 删除文件组 [modify file文件修改内容描述]修改数据文件属性} 查看数据库文件属性 EXEC sp_helpfile 系统存储过程,用于查看数据库有哪些文件及文件属性。 删除数据库 Drop database 数据库名称 分离数据库 EXEC Sp_detach_db 数据库名称 附加数据库 CREATE DATABASE 数据库名 ON PRIMARY (FILENAME= '' ) 说明:附加数据库只需指定数据库的主数据文件。 FOR ATTACH 用存储过程也可以附加数据库: sp_attach_db 数据库名,filename= '' 如果移动过数据库文件,则需要指出所有移动过的文 件。

实验一-ACCESS数据库及表的操作

实验一数据库及表的操作 实验类型:验证性实验课时: 6 学时指导教师: 时间:2013 年月日课次:第节教学周次:第周 实验分室:实验台号:实验员: 一、实验目的 1.掌握数据库的创建及其它简单操作 2.熟练掌握数据表建立、数据表维护、数据表的操作 二、实验内容与要求 1.数据库的创建、打开、关闭 2.数据表的创建:建立表结构、设置字段属性、建立表之间关系、数据的输入 3.数据表维护:打开表、关闭表、调整表外观、修改表结构、编辑表内容 4.数据表的操作:查找替换数据、排序记录、筛选记录 三、实验步骤 案例一:创建数据库 1.创建空数据库 要求:建立“教学管理.accdb”数据库,并将建好的数据库文件保存在“E:\实验一”文件夹中。 操作步骤: 图1-1创建教学管理数据库 (1)在Access 2010启动窗口中,在中间窗格的上方,单击“空数据库”,在右侧窗格的文件名文本框中,给出一个默认的文件名“Database1.accdb”。把它修改为“教学管理”如图1-1所示。 (2)单击按钮,在打开的“新建数据库”对话框中,选择数据库的保存位置,在“E\实验一”文件夹中,单击“确定”按钮,如图1-2所示。 (3)这时返回到access启动界面,显示将要创建的数据库的名称和保存位置,如果用户未提供文件扩展名,access将自动添加上。 (4)在右侧窗格下面,单击“创建”命令按钮,如图1-1所示。 (5)这时开始创建空白数据库,自动创建了一个名称为表1的数据表,并以数据表视图方式打开这

个表1,如图1-3所示。 图1-2“文件新建数据库”对话框 (6)这时光标将位于“添加新字段”列中的第一个空单元格中,现在就可以输入添加数据,或者从另一数据源粘贴数据。 图1-3表1的数据表视图 2.使用模板创建Web数据库 要求:利用模板创建“联系人Web数据库.accdb”数据库,保存在“E:\实验一”文件夹中。 操作步骤: (1)启动Access。 (2)在启动窗口中的模板类别窗格中,双击样本模板,打开“可用模板”窗格,可以看到Access提供的12个可用模板分成两组。一组是Web数据库模板,另一组是传统数据库模板——罗斯文数据库。Web 数据库是Access2010新增的功能。这一组Web数据库模板可以让新老用户比较快地掌握Web数据库的创建,如图1-4所示 (3)选中“联系人Web数据库”,则自动生成一个文件名“联系人Web数据库.accdb”,保存位置在默认Window系统所安装时确定的“我的文档”中显示在右侧的窗格中,参见图1-3所示当然用户可以自己指定文件名和文件保存的位置,如果要更改文件名,直接在文件名文本框中输入新的文件名,如要更改数据库的保存位置,单击“浏览”按钮,再打开的“文件新建数据库”对话框中,选择数据库的保存位置。

数据库应用系统实例

淮海工学院计算机工程学院实验报告书 课程名:数据库原理及应用 题目:实验七数据库应用系统实例 班级:D计算机081 学号: 姓名:

一、实验目的 开发学生学籍管理系统小型数据库应用系统数据库连接、数据操程作序编写,熟练使用Microsoft Visual Studio 2005开发平台。 二、实验内容和要求 1.后台为SQL server2000, 2.前台为面向对象编程语言(可选择) 3.完成数据库连接 4.完成对前面实验所建立的studb109学籍数据库中的数据通过应用系统界面进行更新和查询等操作。 三、实验步骤和实验结果 1.连接SQL Server的数据库访问编程实例。编写一个应用程序来连接数据库名为studb109的SQL Sever数据库,并根据连接结果输出一些信息。 (1).运行Microsoft V isual Studio 2005 (2).新建网站

(3).设计网站 using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Data.SqlClient; namespace web { public partial class_Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){} protected void Button1_Click(object sender, EventArgs e) {try {SqlConnection coon = new SqlConnection(); coon .ConnectionString =" Server =localhost; uid = sa;pwd=; database=studb109"; coon .Open (); Label1 .Text ="连接成功"; } catch { Label1 .Text ="连接失败"; }}}}

Access上机操作题——查询操作说课材料

Access上机操作题之七 ——使用查询向导创建查询㈠ 在“教学”数据库中的“学生”、“课程”、“成绩”三张表中,完成下列操作: 1、建立表间关系: 根据“学生”表和“成绩”表中“学号”字段建立关系;根据“成绩”表和“课程”表中的“编号”字段建立关系;保存已建立的关系。 2、简单查询的创建: ⑴单表查询: 使用简单查询向导,对“学生”表创建一个名为“学生单表简单查询”,只要显示“学生,姓名,性别,出生日期,地址”等字段。 ⑵多表查询: 使用简单查询向导,对“学生”、“课程”、“成绩”表创建一个名为“学生多表简单查询”的简单查询,只要显示“学号,姓名,入学成绩,课程,成绩”等字段。 3、交叉表查询: 使用交叉表查询向导创建一个基于“学生”、“课程”、“成绩”三张表名为“学生成绩交叉查询”的查询。 ⑴若以上三张表没建立关系,则建立它们之间的关系。 ⑵建立一个包含“学生”表中“姓名”,“课程”表中“课程”,“成绩”表中“成绩”字段的简单查询。 ⑶按照书中P56—58页的②—⑤步操作。 4、重复项查询: ⑴使用重复项查询向导,在“学生”表中,查找入学成绩相同的学生。此查询命名为“入学成绩相同学生查询” ⑵使用重复项查询向导,在“学生”表中,查找出生日期相同的学生。此查询命名为“出生日期相同学生查询”。 ⑶使用重复项查询向导,在上面已建立的“学生多表选择查询”中,查找“计算机应用基础”分数相同的学生。此查询命名为“计算机应用基础分数相同查询”。 5、查找不匹配项查询: 使用查找不匹配项查询,在“学生”和“成绩”表中,查找没有成绩的学生。此查询命名为“缺考学生查询”。

Access上机操作题之八 ——使用查询向导创建查询㈡ 在“职工基本情况”数据库中的“职工”、“职工家属”、“职工工资”三张表中,完成下列操作: 1、建立表间关系: 根据“职工”表、“职工家属”和“职工工资”三张数据表中的“职工号”字段建立他们之间的关系,并保存其建立的关系。 2、简单查询的创建: ⑴单表查询: ①使用简单查询向导,对“职工”表创建一个名为“职工工作业绩单表简单查询”,只要显示“职工号,姓名,工作业绩”等字段。 ②使用简单查询向导,对“职工家属”表创建一个名为“职工爱人单表简单查询”,只显示“职工号”和“爱人姓名”字段。 ③使用简单查询向导,对“职工工资”数据表创建一个名为“职工奖金单表简单查询”,显示“职工号,奖金,保险”等字段。 ⑵多表查询: ①使用简单查询向导,创建一个基于“职工”和“职工家属”数据表,名为“职工子女多表查询”,显示“职工号,姓名,婚否,子女”等字段。 ②使用简单查询向导,创建一个基本“职工”和“职工工资”数据表,名为“职工收入多表查询”,显示“职工号,姓名,基本工资,奖金,保险”等字段。 ③使用简单查询向导,创建一个基本“职工”、“职工家属”和“职工工资”三张数据表,名为“职工情况多表查询”,显示“职工号,职工姓名,爱人姓名,子女,基本工资”等字段。 3、交叉表查询: 使用交叉表查询向导创建一个基于“职工”、“职工工资类别”、“职工工资汇总表”三张表名为“职工工资交叉查询”的查询。 ⑴根据“职工”和“职工工资汇总表”的“职工号”字段,和“职工工资类别”和“职工工资汇总表”的“编号”字段,建立以上三张数据表之间的关系。 ⑵建立一个名为“职工工资汇总查询”的简单查询,包含“职工”表中“职工号、姓名”,“职工工资类别”表中“工资类别”,“职工工资汇总表”表中“金额”字段的简单查询。 ⑶根据已建立的“职工工资汇总查询”,创建一个以“姓名”字段为行标题,“工资类别”为列标题,对每位职工工资情况进行汇总的交叉表查询,并将其命名为“职工工资交叉查询”。 4、重复项查询: ⑴使用重复项查询向导,在“职工”数据表中,查找工作业绩相同的职工。此查询命名为“工作业绩相同查询” ⑵使用重复项查询向导,在“职工工资”表中,查找基本工资相同的职工。此查询命名为“基本工资相同查询”。 ⑶使用重复项查询向导,在上面已建立的“职工工资汇总查询”中,查找“奖金”相同的职工。此查询命名为“奖金相同的职工查询”。 5、查找不匹配项查询: 使用查找不匹配项查询,在“职工”和“职工工资”表中,查找两张数据表中不匹配项的职工。此查询命名为“职工不匹配项查询”。

SQL 第3章 数据库的创建和管理(实训1新)

第3章数据库的创建和管理 动手操作一:查看系统数据库信息 任务1:在“资源对象管理器”中查看服务器中的系统数据库,并回答有哪些数据库。 系统数据库:master、model、msdb、tempdb 任务2:在“资源对象管理器”中查看各类数据库的属性。 任务3:在查询窗口中使用命令查看服务器中的系统数据库信息。

动手操作二:用界面方式创建数据库 任务1:在E盘以班级号创建一个文件夹。 任务2:在“资源对象管理器”中创建一个名为jxgl的数据库。 任务3:查看JXGL数据库对象和数据库文件。 任务4:在jxgl库中增加1个次文件组user1,并在其中增加一个数据文件j4_data,属性自定义。在jxgl中增加1个日志文件log2,属性自定义。

动手操作三:用命令创建数据库 任务1:创建一个默认参数的数据库db1。 任务2:查看db1数据库的信息,请说出该数据库中有哪些文件?逻辑文件名、磁盘文件名各是什么?它们的大小是多少?

有主数据文件和日志文件。逻辑文件名:主数据文件db1,日志文件db1_log。磁盘文件名:主数据文件db1.mdf, 日志文件db1_log.LDF。主数据文件:初始大小3MB,增量为1MB,不限制增长。日志文件:初始大小1MB,增量为10%,最大值为2,097,152。 任务3:按下列表格中的要求创建一个名为TESTDB的数据库。 create database TESTDB on primary (name=TD1,filename='E:\SQL\TD1.MDF', size=5MB,maxsize=20MB,filegrowth=10%), (name=TD2,filename='E:\SQL\TD2.NDF', size=10MB,maxsize=30MB,filegrowth=2MB), filegroup User1 (name=TD3,filename='E:\SQL\TD3.NDF', size=5MB,filegrowth=2MB) log on (name=TLOG,filename='E:\SQL\TLOG.LDF', size=4MB,filegrowth=20%)

Access上机操作题——宏的创建与设计

Access上机操作题之三十二 ——宏的创建与设计㈠ 一、认识Access中的宏: ●宏的定义: 宏是一种以动作为单位的特殊代码,是由一连串动作组成的操作序列的集合,用来自动完成特定任务的操作或操作集。 ●动作的构成: 宏中的每个动作是由其动作名及其参数构成。如,Openform(动作名)表示打开指定的窗体。 ●宏、宏组与条件操作宏: ⑴宏:是一个操作序列的集合。 ⑵宏组:是多个操作序列的集合,即宏的集合。 ⑶条件操作宏:是带有条件的操作序列。 ●宏的功能: ⑴打开、关闭表单、报表,打印报表,执行查询。 ⑵移动窗口,改变窗口大小。 ⑶模拟键盘动作,为对话框或其他等待输入的任务提供字符串输入的功能。 ⑷显示信息框,响铃警告。 ⑸数据的导入、导出。 ⑹执行任意的应用程序模块。 ⑺为控件的属性赋值。 ●宏的设计视图窗口: 宏的设计视图用于宏的创建、编辑与测试,其窗口分为上下两个部分,上半部分为宏设计窗口,下半部分为宏参数的操作窗口。 1、宏设计窗口:一般包含宏名、条件、操作、注释等四个部分组成,其中“宏名”和“条件”两个部分经常被隐藏,可通过工具栏中的“宏名”和“条件”两个按钮显示出来。 ⑴宏名:是为所创建的宏命名。 ⑵条件:设置当前宏的运行条件。 ⑶操作:包含待执行的宏指令。 ⑷注释:为每一个操作提供注释说明,以帮助用户记忆宏的作用。 2、操作参数:是为当前宏指令设置相关的操作参数。当你选定“操作”栏中的宏指令时,就可在“操作参数”区中设置操作参数值。例如: ⑴当前选定的是“操作”栏中的“OpenForm”项,表示打开一个窗体或报表。 ⑵窗体名称:学生——表示打开的是“学生”窗体。 ⑶视图:窗体——表示在“窗体”视图方式下打开该窗体。 ⑷数据模式:只读——表示用户的操作权限为“只读”。 ⑸窗口模式:普通——表示窗口的显示方式为“普通”模式。

实验七创建和操作数据库对象

实验报告 课程:数据库原理与实用技术实验 实验7 创建和操作数据库对象 实验7-1 存储过程 1、使用不带参数的存储过程 (1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系 create proc my_proc as select学号,姓名,性别,年龄,所在院系from学生表 where所在院系='计算机'and性别='女' (2)执行存储过程 (3)修改存储过程,使其能够查询计算机系女生的所有基本信息 alter proc my_proc as select*from学生表 where所在院系='计算机'and性别='女' 2、带输入参数的存储过程 (1)创建一个存储过程my_procsex,使其能够查询“学生表”中男学生或女学生的学号、姓名、性别、年龄和所在院系 create proc my_procsex @sex char(2) as select学号,姓名,性别,年龄,所在院系from学生表where性别=@sex (2)执行存储过程 exec my_procsex @sex='男' 3、带输入/输出参数的存储过程 (1)创建一个存储过程my_procage,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息) create proc my_procage @name char(10),@age int OUTPUT as if not exists(select*from学生表where姓名=@name) return-155 select年龄from学生表where姓名=@name (2)执行存储过程 declare @once_age int, @status int exec @status=my_procage @name='陈忠刚', @age=@once_age output if @status=-155 print'对不起,您输入的名字查找失败!' print'the output data is:'+convert(varchar(10),@once_age)

易语言数据库教程之ACCESS数据库全操作

易语言数据库教程之ACCESS数据库 前面我们已经对比分析过易语言所支持的几种常见数据库,在这几种数据库中,我们先来学习一个ACCESS数据库,当然,MSSQL数据库是完全一样的。 数据库的学习可以说非常的简单,也可以说很不简单,这要看你的出发点来定,当然,前面所学习的易语言基础同样很重要! 和前面所有的教程一样,所讲的内容部分来源我的课堂教学,面对的是高中学生,有些地方的讲解会非常的详细,而有些地方又会相对简单的一笔带过,如果有什么地方你理解起来有困难的话,请与我联系,呵呵! 本教程并不是要把易语言中对ACCESS数据库的所有操作和应用都讲一遍,都讲清楚,那是不可能的,这一点倒是有点遗憾,但我会尽我所能把一些必需的内容讲清楚! 一、准备工作 1、ACCESS的安装参见Microsoft Office2003安装图解教程 2、ACCESS数据库中数据表的建立 3、易语言ACCESS数据库控件介绍 二、数据库操作 1、易语言ACCESS数据库的连接及打开 2、易语言ACCESS数据库的读操作 3、易语言ACCESS数据库的读操作问题解决 4、易语言ACCESS数据库的高级打开操作 5、易语言ACCESS数据库的写操作 6、易语言ACCESS数据库记录的简单修改 7、易语言ACCESS数据库记录的高级修改 三、数据库与高级表格

1、易语言ACCESS数据库与高级表格一 ACCESS数据库中数据表的建立 在ACCESS中建立一个数据库及在数据库中建立数据库其实是非常简单的。 1、新建数据库,这就不用多说了,在“文件”菜单下第一个就是“新建”,它的快捷键是“Ctrl+N”,和大多数软件完全一样。 2、新建的数据库第一步操作就是要保存,这也不用多说了,相信大家都会的。 3、新建数据表,新建的数据库如下图,是一个表都没有,新建一个数据表的方法有很多,这里我们选择“使用设计器创建表”,如下图所示。 3、这里我们以建立一个学生成绩表为例进行操作,随便写了一些字段在里面,注意一下字段的类型,有些是“自动编号”,有些是“文本”,有些是“数字”,根据需要来,最后别忘记给“id”这个字段设置为“主键”。

Access数据库上机练习加答案解析

全国计算机等级考试二级上机题库I 第1套题目 一、基本操作题 请在“答题”菜单下选择相应命令,并按照题目要求完成下面的操作,具体要求如下: 注意:下面出现的“考生文件夹”均为考试系统安装盘符下的“\K01\29010001”文件夹。 考生文件夹下存在一个数据库文件“samp1.mdb”,里面已经设计好表对象“tStud”。请按照以下要求,完成对表的修改: (1)设置数据表显示的字体大小为14、行高为18。 (2)设置“简历”字段的设计说明为“自上大学起的简历信息”。 (3)将“年龄”字段的数据类型改为“整型”字段大小的数字型。 (4)将学号为“20011001”学生的照片信息换成考生文件夹下的“photo.bmp”图像文件。 (5)将隐藏的“党员否”字段重新显示出来。 (6)完成上述操作后,将“备注”字段删除。 二、简单应用题 请在“答题”菜单下选择相应命令,并按照题目要求完成下面的操作,具体要求如下: 注意:下面出现的“考生文件夹”均为考试系统安装盘符下的“\K01\29010001”文件夹。 考生文件夹下存在一个数据库文件“samp2.mdb”,里面已经设计好三个关联表对象“tStud”、“tCourse”、“tScore”和一个临时表对象“tTemp”。试按以下要求完成设计: (1)创建一个查询,按所属院系统计学生的平均年龄,字段显示标题为“院系”和“平均年龄”,所建查询命名为“qT1”。 (2)创建一个查询,查找选课学生的“姓名”和“课程名”两个字段内容,所建查询命名为“qT2”。 (3)创建一个查询,查找有先修课程的课程相关信息,输出其“课程名”和“学分”两个字段内容,所建查询命名为“qT3”。 (4)创建删除查询,将表对象“tTemp”中年龄值高于平均年龄(不含平均年龄)的学生记录删除,所建查询命名为“qT4”。 三、综合应用题 请在“答题”菜单下选择相应命令,并按照题目要求完成下面的操作,具体要求如下: 注意:下面出现的“考生文件夹”均为考试系统安装盘符下的“\K01\29010001”文件夹。 考生文件夹下存在一个数据库文件“samp3.mdb”,里面已经设计好窗体对象“fStaff”。试在此基础上按照以下要求补充窗体设计: (1)在窗体的窗体页眉节区位置添加一个标签控件,其名称为“bTitle”,标题显示为“员工信息输出”。 (2)在主体节区位置添加一个选项组控件,将其命名为“opt”,选项组标签显示内容为“性别”,名称为“bopt”。 (3)在选项组内放置二个单选按钮控件,选项按钮分别命名为“opt1”和“opt2”,选项按钮标签显示内容分别为“男”和“女”,名称分别为“bopt1”和“bopt2”。 (4)在窗体页脚节区位置添加两个命令按钮,分别命名为“bOk”和“bQuit”,按钮标题分别为“确定”和“退出”。 (5)将窗体标题设置为“员工信息输出”。 注意:不允许修改窗体对象“fStaff”中已设置好的属性。 第2套题目 一、基本操作题 请在“答题”菜单下选择相应命令,并按照题目要求完成下面的操作,具体要求如下: 注意:下面出现的“考生文件夹”均为考试系统安装盘符下的“\K01\29010001”文件夹。 在考生文件夹下,存在一个数据库文件“samp1.mdb”。在数据库文件中已经建立了一个表对象“学生基本情况”。试按以下操作要求,完成各种操作: 1.将“学生基本情况”表名称更改为“tStud”。 2.设置“身份ID”字段为主键;并设置“身份ID”字段的相应属性,使该字段在数据表视图中的显示标题为“身份证”。 3.将“姓名”字段设置为有重复索引。 4.在“家长身份证号”和“语文”两字段间增加一个字段,名称为“电话”,类型为文本型,大小为12。 5.将新增“电话”字段的输入掩码设置为“010-********”形式。其中,“010-”部分自动输出,后八位为0到9的数字显示。 6.在数据表视图中将隐藏的“编号”字段重新显示出来。

相关文档
最新文档