[转载]SQL Plus 一些使用技巧

原文地址:SQL Plus 一些使用技巧作者:☆水『若寒

Sql*plus的使用

Sql*plus介绍

Sql*plus是oracle提供的一个工具程序,既可以在oracle服务器使用,也可以在oracle客户端使用。在windows下分两种,sqlplus.exe是命令行程序,sqlplusw.exe是窗体程序,通常我们在开始菜单中启动的是后者,两者的功能是一致的。
Sql*plus是一个最常用的工具,具有很强的功能,主要有:

1.        数据库的维护,如启动,关闭等,这一般在服务器上操作。
2.        执行sql语句执行pl/sql。
3.        执行sql脚本。
4.        数据的导出,报表。
5.        应用程序开发、测试sql/plsql。
6.        生成新的sql脚本。
7.        供应用程序调用,如安装程序中进行脚本的安装。

2        dual表
dual是一张系统表,同时也被定义成了public同义词。它只有一个字段和一条记录。该表本身的结构和数据没有什么意义,主要是借助该表进行其它操作。如:
select  sysdate  from dual;  --获取函数值
select 21+15*3 from dual;  --计算表达式的值
说明:不要对dual表进行ddl与dml操作,只进行查询操作。

3        sql*plus使用
3.1        启动sql*plus
1.        不带参数启动
启动sqlplusw.exe程序,会弹出登陆框,让输入用户名、密码和连接字符串,在用户名中输入“/nolog”,表示先进入sql>提示符,先不连接数据库,下面可以利用connect命令连接数据库。启动sqlplus.exe程序,会提示输入用户名与密码。如果用户名输入

2.        带参数启动
下面列举一些最常见的方式,还有很多可选参数。
1)        不连接数据库
sqlplus /nolog
2)        连接数据库
sqlplus username/password
3)        使用net8连接字符串连接数据库
sqlplus username/password@connstr
4)        连接后执行filename指定的sql脚本,sql脚本中是sql命令和sql*plus的设置命令
sqlplus username/password[@connstr] @filename

3.2        sql*plus的命令

3.2.1        帮助命令
1.        help命令
格式:help 命令名 ,用于知道某个具体命令的帮助信息。
        如:help connect

2.        describe命令
用户查看表的结构;获取函数,存储过程和包的描述。这是非常有用和常用的一个命令。
如:desc user_tables
说明:在sql*plus中,所有命令都可以用前面的四个字母作为整个命令。

3.2.2        编辑命令

sql*plus会将上一次执行过的sql命令(包括sql语句和pl/sql语句,包括一行或多行)保存到缓存区中,可以对缓存区中信息进行编辑。
编辑后可以通过 “/ ”命令执行修改后的缓存区中的命令,如果不休改,则是执行原有命令。

1.        list [n] 命令
显示上一条命令中的第n行,如果不指定n,则显示上一命令的所有行,这样当前行就是最后一行。其它操作会对当前行进行操作,所以其它操作需要先执行list命令。
如:
begin
        insert into test values(1);
end;
/
list

2.        change命令
编辑当前行的内容,先用list命令指定当前行。语法为:
change  /被修改字串/修改后的串
如:
list 2
change /(1)/(20)

3.        增加新行
在第一行插入一行,方法为:输入0,在0后输入文本。如:
0 insert into test values(2);
在当前行后插入一行,方法为:输入input(或i),回车,输入新行,再回车,会提示再输入新行,如不想输入,输入点号,回车。如:

4.        删除行
del   --删除缓存区当前行,执行前先用list命令指定当前行
del n  删除缓存区指定的行

5.        使用操作系统编辑器编辑命令
在 sql*plus中输入edit命令,会自动打开系统的缺省的文本编辑器(windows下为notepad),缓存区中内容被装到文本编辑器中,这时可以对其中的内容进行编辑(这时sql*plus处于等待状态),修改完毕后,保存文件后。被修改的内容就会被写入缓存区。这对于修改错误命令很方便。

6.        save命令
格式:save 文件名 [replace | append]
save命令的作用是将缓存区中内容保存到指定文件中。如果指定的文件不存在,将会创建,但如果文件目录不存在,将会失败。如果指定文件名的文件已存在,不指定replace或append参数将会失败。指定replace表示将覆盖原文件内容,指定append表示将缓存区内容加到文件后。

7.        get命令
格式:get 文件名
get命令的作用是将指定文件的内容加载到缓存区中,以供编辑或执行。

3.2.3        spool命令

sql> spool 文件名
执行该命令后,如果指定的文件不存在,则会按指定的文件名创建一个空文本文件,如果目录不存在,会失败。如果指定的文件已存在,则文件内容将会被清空。
        执行上述命令后,此命令后的所有输出(包括命令、输出提示信息、错误信息等)都会被写入指定的文件。需要说明的时,并不是每输出一行信息,就会立即写入文件,有个缓存过程。
Sql>spool off
上述命令就是停止存储,将前面所有输出立即写入文件。
Sql>spool out
除完成spool off命令的功能外,还打印输出的信息。
说明:spool off/out命令必须与spool命令一一对应。

Spool命令的用途主要有如下:
1)        导出数据
2)        记录脚本的执行日志
3)        生成新的sql脚本

3.2.4        start/@ 命令
格式:start/@ 脚本文件名
这样可以将相关的sql/plsql语句,sql*plus的命令写在脚本中,从而执行。最常用的就是安装脚本,升级脚本。
如:
sql> start e:test.sql
sql> @e:test.sql

3.2.5        设置sql*plus环境(set命令)

可以通过设置参数来改变sql*plus的一些属性,如显示等。如果运行的是sqlplusw.exe程序,通过菜单“选项|环境”可以通过界面改变这些参数的默认值。也可在sql>提示符下输入set命令来改变参数的值。
查看参数的当前设置值的命令是:show 参数名 。  常见的设置参数命令有:

1.        set pagesize [n]
用于设置每页的行数,范围为1~ 50000,如果为0,则表示不分页,不带n,表示为0。否则,缺省情况下,当查询结果的行数超过一页的行数时,就会分页显示,每页的开头会显示列标题信息。

2.        set newpage [n]
该命令与pagesize结合使用,用来设置每一页的顶行的空行数,范围为0~ 999,不带n,表示为0。缺省值为1。

3.        set linesize n
设置每行能容纳的字符数,范围为1~32767 。在查询时,通常一条记录会显示一行,如果一行显示不下,则会自动换行。用户输入数据时,当一行输入的值超过一行的最大值时,也会自动换行。

4.        set heading off|on
设置打开(on)或关闭(off)查询结果页的头信息,如列标题。比如,想输出sql语句存储到文件中时,就需要把这关闭。如:
select 'insert into test1 values('||id||');' from test;

5.        set feedback off|on
设置为on,当执行insert,update,pl/sql等操作时,会提示执行的结果。如果设置为off,则不显示。

6.        set termout off|on
设置为off,执行的信息就不会在屏幕上显示。需要说明的是,该选项只有在脚本中设置,执行脚本时才有效。

7.        set trimspool off|on
设置为on,查询结果输入到文件中时,对于查询结果的后面的空格,将被截掉。

8.        set serveroutput off|on
设置on,在pl/sql中使用dbms_output包输出调试信息时sql*plus中可以显示出来,否则不显示。缺省为off。关于dbms_output包的详细信息在以后介绍。需要说明的是,该设置只是在当前会话有效,一旦重新连接后,又恢复为默认值。可以在未连接数据库的情况下设置,设置后连接后有效,但一旦重新连接就恢复默认值了。 如:
begin
dbms_output.put_line('hello');
end;

9.        set timing off|on
设置为on,每执行一sql或pl/sql,都会显示该执行所需要的时间,通过这可以查看sql语句的执行效率。

10.        set autocommit on|off|n
在sql*plus中,执行dml语句后,需要commit后或者执行了dcl或ddl语句后才会被提交。本命令可以设置让sql*plus自动提交。
        其中on表示每执行一sql/plsql,都自动提交一下。而off只是当sql*plus退出时才自动提交一下。n表示执行n条sql/plsql语句后就自动提交一下。

11.        set echo on|off
设置为on,sql*plus执行脚本时,都会将每一条执行的sql语句输出来,这样如果执行出错,便于定位。缺省为off 。

3.2.6        show命令

通过show 参数名 ,可以看到当前sql*plus的一些环境参数的设置。还可以查看其它信息,如:
show user
查看当前登陆的用户
show error
查看sql执行出错的详细信息,因为创建pl/sql对象时即使出错,sql*plus不会报error,只会报warning,而且无法看到详细错务信息,通过show error就可以看到。


3.2.7        column(col)命令
该命令可用于设置列的显示属性,常见格式如:

1.        col 列名 format an [truncate]
上面命令用于设置列的显示宽度,n为宽度。Truncate表示如果列值宽度超过n时,就截去超长的部分。不加Truncate,如果列值宽度超过n时,换行显示。
如:col s format a20
比如一个字段定义了varchar2类型,长度很大,但实际字段值宽度很少,如果不加设置,在sql*plus查询时,会占用定义的宽度,这样看起来不方面。

2.        设置数字的显示宽度
create table test(id number);
insert into test values(888888812345678);
SQL> select * from test;
        ID
----------
8.8889E+14
SQL> select to_char(id) from test;

TO_CHAR(ID)
----------------------------------------
888888812345678
col id format 999999999999999999999999  --设置数字的显示宽度
SQL> select * from test;
                       ID
-------------------------
          888888812345678

3.        清除列的设置
col 列名 clear    --清除指定列的格式设置
clear columns  --清除所有列的格式设置

3.2.8        host命令
通过host命令,可以在sql*plus中执行操作系统命令。如:
sql>host mkdir e:temp

3.2.9        退出sql*plus
语法:exit [n]
说明:通过exit命令退出sql*plus,退出可以带一个错务码。主要是供父进程使用。

3.3        执行失败的处理
当一个脚本中存在大量的sql/plsql语句时,执行该脚本时,如果其中有一条sql语句执行失败,可能很难发现。如果能让碰到错误时,让sql*plus退出,再结合spool命令查看日志,就很容易知道脚本的执行情况。这可以通过whenever命令来实现。

格式一:whenever sqlerror exit [success | failure | warning | n] [commit | rollback | none]
说明:一旦脚本中该语句之后的某sql语句执行出错,就会停止出错,sql*plus就会自动退出。其中success | failure | warning | n 为设定sql*plus出错后退出带出的错务码,success | failure | warning为固定的常量,n为指定任意数值。如果加了commit选项,则出错后,sql*plus在退出前,会自动执行commit一下;如果加了rollback选项,则出错后,sql*plus在退出前,会自动执行rollback一下;如果加了none选项或什么都不加,则退出不会做任何事,但实际上默认设置下sql*plus在退出前会commit一下,所以这种情况与加了commit选项效果一样。
例:whenever sqlerror exit sql.sqlcode --保证了出现错误,立即退出,并返回错误码
例:***test.sql***
spool e:test.txt
whenever sqlerror exit
select * from test1233;
select * from dual;
spool off

格式二:whenever sqlerror continue [commit | rollback | none]
说明:一旦脚本中该语句之后的某sql语句执行出错,会继续往下执行,sql*plus不会自动退出,默认就是这样的设置。如果加了commit选项,则出错后,执行下一条语句前,sql*plus会自动执行commit一下;如果加了rollback选项,则出错后,执行下一条语句前,sql*plus会自动执行rollback一下;如果什么都没加或加了none选项,则出错后,对前面执行过的语句不会自动添加执行任何commit或rollback语句,是否commit或rollback,看后面的语句。

例:***test.sql***
spool e:test.txt
whenever sqlerror continue
select * from test12;
select * from dual;
spool off

说明:当创建一个pl/sql对象时,如存储过程,函数,触发器,包等。即使代码写的有问题,在sql*plus执行时不会报error,只会报warning。这样通过whenever sqlerror是无法获取到的。而且sql*plus不直接给出出错的详细信息,这可以通过show error命令看到出错的详细信息。

3.4        固化对sql*plus的环境设置
通过上面的介绍我们可以知道,可以通过命令设置sql*plus运行环境参数。但sql*plus一旦关闭重新打开,这些参数又恢复成默认值,又需要重新设置,这非常不方便。好的是,oracle提供一种方法可以使这些设置固定下来。
        如果%ORACLE_HOME%sqlplusadmin目录下有glogin.sql文件(不同的系统目录和文件名可能不确定),则启动sql*plus后(如果有初始连接,则连接后),sql*plus会自动执行该脚本,这样就可以在该脚本对sql*plus的参数进行设置,还可以加上特定的sql/plsql语句。
        可以看出,每次启动sql*plus,不管是谁启动,都会执行glogin.sql脚本。Oracle同时提供一种机制让不同的操作系统用户启动sql*plus执行自己特定的脚本。方法是,在当前目录下(即运行sql*plus程序时的当前目录)编写一个文件名为login.sql的脚本,将自己特定的设定写入文件,这样启动sql*plus时首先会执行login.sql,然后再执行公共的glogin.sql。这在windows系统下显的不是很方面,因为只有在命令行下启动sql*plus时才有效,且必须先设置当前目录。而在unix下就非常有用,因为unix下每个登陆用户都有自己的主目录,而登陆后当前目录就是主目录,不同的用户可以将login.sql文件放在自己的主目录下。

4        日期类型的显示
在sql*plus中执行:select sysdate from dual; 发现查询结果是以字符串显示的,但格式不好看。原因是,oracle对日期类型它会自动的按照缺省格式隐式的转换为字符串类型。
可以通过t_char函数和to_date函数来实现日期与字符串之间的显示转转。如:
select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;
create table test(s date);
insert into test values(to_date(‘2005-01-25 10:20:22’,’ yyyy-mm-dd hh24:mi:ss’));
也可以通过执行sql命令,来改变当前会话的日期格式。如:
alter session set nls_date_format=’ yyyy-mm-dd hh24:mi:ss’;
select sysdate from dual;
insert into test values(‘2005-01-25 10:20:22’);
可以直接将字符串插入到日期类型中,原因是oracle对数据类型会做自动隐式的转换。

说明:该设置只在当前会话有效,重新登陆后,又恢复为默认值。

5        脚本中变量
5.1        替换变量
变量前加一个&符号,sql*plus在命令中遇到替换变量时,用真实值去代替,相当于c语言中的宏定义。真实值来源于三个地方:
1)        脚本参数带入
2)        脚本中直接定义
3)        用户动态输入
如:
select &num from dual;

sql*plus中有几个环境参数将影响替换变量,为:

set define off | c
off表示关闭替换变量功能。c为定义替换字符(缺省为&),同时启用替换变量功能。

set escape off | c
定义转义字符。即&前面如果有指定的c字符,则作为普通字符处理。默认是off,即没有定义转义字符。如:
set escape
select ‘&hello’ from dual;

set ver off|on
如果为on,在替换前后会列出命令文件的每一行,缺省为on。

set concat c
设置替换变量与其后的其它字符的分隔符,缺省为句点(.)。如:
select ‘&hello.good’ from dual; -- 句点不作为输出的一部分
等价于:select  ‘&hello’||’good’ from dual;
select ‘&hello good’ from dual; --空格也起到分隔作用,单空格作为输出的一部分
select  ‘&hello’||’.good’ from dual;

5.1.1        脚本带参数
脚本可以带参数,在脚本中通过&n来引用参数,n为1表示为第一个参数,2表示第二个参数,依次类推。如:

set ver off;
connect omc/&1
insert into test values(&2);
commit;
执行该脚本的方法是:sql>@e:test.sql omc self 45

如果参数是字符串,且字符串有空格,应该用双引号或单引号扩起,如果字符串中有双引号,则只能用单引号扩起,如果字符串中要输入单引号,则只能用双引号扩起,且输入两个单引号才代表一个单引号。如:

set ver off;
connect omc/&1@&2
create table test(s varchar2(20));
insert into test values('&3');
commit;
执行:
sql>@e:test.sql omc self  hello
sql>@e:test.sql omc self  “hello world”
sql>@e:test.sql omc self  hello world’
sql>@e:test.sql omc self  “hello ‘’zte’’world”
sql>@e:test.sql omc self  ‘hello “zte” world’

正常情况下,slq*plus执行时,碰到&符号,就会作为参数来处理,如果&符号后跟的是数字,就会从命令行中取相应的值替换&n,如果找不到,如n为3,但执行时只带了2个参数,sql*plus就会在屏幕上提示输入参数。如果&后跟的不是数字,而是其它字符,则sql*plus会把&及其后的字符串(截止到空格为止)当作一个参数提示输入。
如:
select ‘hello&good china’ from dual;
那么如何将&作为普通字符处理呢?除了前面介绍的定义escape环境参数外,另一方法是,&符号后紧跟单引号(之间可以跟空格)。如:
select ‘hello&’||’good china’ from dual;
select ‘hello&  ’||’good china’ from dual;

所以,一般情况下在sql*plus下,执行sql语句时或脚本时,对&字符需要特殊处理一下,因为它是sql*plus中的特殊字符。

5.1.2        脚本中定义
格式:define 标识符 = 值
如:
define n=12
define s=’hello’ --是否加引号没有关系
通过加&引用,如:
select &n from dual;
select ‘&s’ from dual; --注意必须要加引号
begin
dbms_output.put_line('&s');
end;

取消定义的方法是:undefine标识符
一旦取消定义后,如果在通过&引用,则sql*plus会提示输入。

5.1.3        接收用户交互式输入

很多时候,在执行脚本时,我们希望有些信息根据脚本的提示,让用户动态输入,从而在下面的sql语句中使用。
语法为:accept var_name typename prompt ‘hint’ [hide]
        说明:hide表示以密文方式让用户输入。typename只能是char,number,date三种。
如:
accept user_name char prompt ‘please input username:’
accept passwd char prompt ‘please input password:’ hide
通过变量前加&引用:connect &user_name/&passwd


5.2        捆绑变量
一般情况下,我们都是在pl/slq中定义变量,如:
delclare
        s varchar2(10);
begin
        s:=’hello’;
        insert into test values(s);
end;
上面的程序段中,定义了变量s,但它只在该程序段有效。那如何定义在整个sql*plus中都有效的变量(这里称为捆绑变量)呢?方法如:
var g_str varchar2(10)
begin --赋值只能在pl/sql中进行
:g_str:='hello'; --注意前面要加冒号
end;
select :g_str from dual; --引用捆绑变量,注意前面要加冒号
print g_str  --显示捆绑变量,注意前面不要加冒号
declare --在pl/sql中引用捆绑变量
s varchar2(10);
begin
dbms_output.put_line(:g_str);
s:=:g_str;
dbms_output.put_line(s);
insert into test values(:g_str);
end;

6        脚本例子
6.1        生成表的备份脚本
编写存储过程,该存储过程生成一个select语句,执行结果为输出指定表的所有记录的insert语句。
create or replace function BuildSelSql(tablename in varchar2) return varchar2 is
  cursor cur(tabname varchar2) is
   select column_name,data_type from user_tab_columns where table_name=upper(tabname) order by COLUMN_ID;
  tmp varchar2(4000);
  msg varchar2(4000);
  len number;
  num number;
begin
  tmp:='select ''insert into '||tablename||' values(''';
  for re in cur(tablename) loop
    if re.data_type='CHAR' or re.data_type='DATE' or re.data_type='VARCHAR2'
      or re.data_type='RAW' then
      tmp:=tmp||'|'||'|''''''''';
      tmp:=tmp||'|'||'|'||re.column_name||'|'||'|'||''''''',''';
    else
      --tmp:=tmp||'|'||'|'||'decode('||re.column_name||',null,''null'','||re.column_name||')'||'|'||'|'||''',''';
      tmp:=tmp||'|'||'|'||'nvl('||re.column_name||',0)'||'|'||'|'||''',''';
    end if;
  end loop;
 
  len:=length(tmp);
  msg:=substr(tmp,1,len-3);
 
  msg:=msg||''');'' from '||tablename ||';';
  return msg;
end;
执行函数例子:

select BuildSelSql('test') from dual; --test为表名


set trimout on
set trimspool on
set heading off
set feedback off
set termout off
set ver off
set linesize 4000
set pagesize 0
whenever sqlerror exit
set serveroutput on
spool e:test1.sql
select BuildSelSql('test') from dual;
spool off

set pagesize 6
btitle left 'commit;' --分批提交
spool e:test.txt
  start e:test1.sql
spool off
执行:
        sql>@e:test.sql
执行后查看e:test.txt文件的内容。

 

转载于:https://www.cnblogs.com/songzhenhua/archive/2012/08/13/9312846.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云服务器(Centos)部署SVN

1,安装svn yum install subversion 2,查看版本号 svnserve --version 3,创建SVN版本库(在var/svn 文件夹下) 新建文件夹 mkdir -p /var/svn/svnrepos 创建版本库 svnadmin create /var/svn/svnrepos 4,修改…

ffmpeg命令提取像素格式

1: 提取yuv格式:不修改宽高 取3秒 ffmpeg -i test_1920x1080.mp4 -t 3 yuv420p_orig.yuv ffmpeg -i test_1920x1080.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv 可以使用ffplay播放:ffplay -video_size 1920x1080 yuv420p_orig.yuv 提取y…

Javascript(js)使用function定义构造函数

Javascript并不像Java、C#等语言那样支持真正的类。但是在js中可以定义伪类。做到这一点的工具就是构造函数和原型对象。首先介绍js中的构造函数。 Javascript中创建对象的语法是在new运算符的后面跟着一个函数的调用。如 1 varobj newObject();2 vardate newDate();运算符new首…

错误:将字符串分配给C中的char变量| 常见的C程序错误

If you assign a string to the character variable, it may cause a warning or error (in some of the compilers) or segmentation fault error occurs. 如果将字符串分配给字符变量,则可能会导致警告或错误(在某些编译器中)或发生分段错误。 Consider the code…

【转】用BibTeX 写 Reference

BibTeX 是一种格式和一个程序, 用于协调LaTeX的参考文献处理,BibTeX 使用数据库的的方式来管理参考文献.,BibTeX 文件的后缀名为 .bib。 例子: article{name1, author {作者, 多个作者用 and 连接}, title {标题}, journal {期…

计算机二级C语言易混淆的区别

1,if(a1)与if(a1)的区别 首先,if(a1) 等价于 a1;if(a); 而a 1,是判断a是不是为1; if(sq)里面的分为两种情况,一种是sq为0,不执行if里面的代码内容;另一种是sq不为0,执行里面的代码内…

ffmpeg命令mp3中提取pcm格式

原mp3文件: ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm (这可能是pcm原格式查不到什么信息但是可以播放的:ffplay -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm) ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -samp…

C++ STL map的使用

1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 2、map的功能 自动建立Key - value的…

bfs广度优先搜索算法_图的广度优先搜索(BFS)

bfs广度优先搜索算法What you will learn? 您将学到什么? How to implement Breath first search of a graph? 如何实现图的呼吸优先搜索? Breadth First Search is a level-wise vertex traversal process. Like a tree all the graphs have verte…

考研C++必刷题(一)

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 解题思路: 利用三层循环,分别控制百位十位个位,若百位十位个位有重复的,则不输出即可。 代…

关于计算机存储单位?

关于计算机存储单位? 计算机只能识别二进制。(1010100110. . . ) 1字节 8bit(8比特)–>1byte 8bit 1bit 就是一个 1 或 0 1KB 1024byte byte是[-128 ~ 127],共可以标识256个不同的数字。 byte类型的最大值是怎么计算出来的…

ffmpeg 命令转封装

1: 改变编码格式 原mp4文件:视频是h264 音频是aac 视频转成h265,音频转成mp3(容器为mkv,有些容器不一定支持放h265的) ffmpeg -i test_60s.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv 播放&#xff1a…

Delphi 2010 DataSnap封装COM对象

在Delphi 2010中,DataSnap已完全可以不使用COM了.想起在windows上配置COM,就麻烦的很,如果在本机还好说,在远程要涉及到权限等诸多问题(用SocketConnection要方便一些). 如果早期写的程序中有许多COM对象,我们可以通过DataSnap的封装,使用适配器模式简单地封装一下,那么在客户端…

JavaScript中带有示例的Math.PI属性

JavaScript | Math.PI属性 (JavaScript | Math.PI Property) Math.PI is a property in math library of JavaScript that is used to find the value of PI(π) which is a mathematical constant whose value is 3.141. It is generally used to solve problems related to c…

设计模式笔记——Bridge

桥接模式Bridge Pattern 组合关系(实心菱形):强的拥有关系,体现了严格的整体和部分的关系,部分和整体的生命周期相同。 聚合关系(空心菱形):弱的拥有关系,A对象可以包含B…

实验7 视图操作

实验7 视图操作一、实验目的 1.了解视图的功能。 2.掌握创建和查看视图的方法。 3.掌握视图修改和删除视图的方法。 二、实验要求 创建student数据库中的相关视图。 三、实验步骤 1.在members表中创建地址为“湖南株洲”的会员的视图V_addr,SQL代码如下所示&#x…

从日志服务器接收的对 metaWeblog.newPost 方法的响应无效的解决方案

今天用windows Live Writer(WLW)写博客出现了“从日志服务器接收的对 metaWeblog.newPost 方法的响应无效”的故障。之前用的还好好的。于是我祭起google大法。从网上搜索了不少资料都是关于WP,没有关于z-blog。这些文章提到可能的问题是诸如插件冲突、utf编码之类的…

汇编语言-006(数组操作 、字符串应用、PUSHFD_POPFD 、PUSHAD_POPAD 、 子程序 函数、 USES 、 INC_DEC )

1: 计算斐波那契数列前7个数值之和 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data.code main PROCmov esi,1mov edi,1mov eax,2mov ecx,5 L1: mov ebx,esiadd ebx,edimov esi,edimov edi,ebxadd eax,ebxloop L1INVOKE ExitProcess,0 main END…

弗林的计算机体系结构分类

计算机体系结构分类 (Classification of computer architecture) According to Flynns there are four different classification of computer architecture, 根据弗林的说法,计算机体系结构有四种不同的分类, 1)SISD(单指令单数据流) (1) SISD (Single…

读入txt

用C#读取txt文件的方法1、使用FileStream读写文件 文件头: using System;using System.Collections.Generic;using System.Text;using System.IO; 读文件核心代码: byte[] byData new byte[100];char[] charData new char[1000]; try{FileStream sFile…