Oracle相关知识杂记

1.1 ORACLE导出导入命令expdp和impdp详解。
百度知道:https://wenku.baidu.com/view/ffabe580cf84b9d529ea7a7b.html
1.2 创建索引
在SQLPLUS环境下,可以使用@path的方式来执行SQL脚本
命令如下
@d:/oracle scripts/exec_scripts_test.sql
但是我尝试了多次,最后都是这个错误
SP2-0310: unable to open file “/oracle.sql”
后来将path中的’D:\oracle scripts’修改成‘D:\oracle_scripts’,脚本执行成功
SQLPLUS环境下可能不识别空格
1.3 ORA-XX错误收集
1.3.1 ORA-01034
oracl服务关闭
停止监听:
Last login: Thu May 31 17:14:22 2018 from 10.10.78.124
Oracle Corporation SunOS 5.11 11.3 September 2015
nexsv@solaris115:~ su      Password:      root@solaris115:~# su oracle      oracle@solaris115:~ . .profile (第一个点指的是更新) 后面.proflie 是文件 特别注意的是第一个点和第二点之间的空格
oracle@solaris115:~$
这几步是为了用ORACLE用户去执行监听的停止,su的用法是在root用户下切换用户。
lsnrctl stop
停数据库服务:
sqlplus /nolog
connect /as sysdba 以上两步可以合成一步 sqlplus / as sysdba
shutdown abort 这里的参数还有其他 链接如下https://blog.csdn.net/zqpgood/article/details/6026031
exit
启动数据库:
sqlplus /nolog
connect /as sysdba
startup
exit
启动监听:
lsnrctl start
exit
1.3.2 expdp命令 ORA-39166 表名错误
exp命令 EXP-00011 表名错误
1.3.3. expdp ORA-39070
exp EXP-00028 无法导出文件,可以在数据库里的direction将路径与服务器的要导出的路径不匹配即可。
1.3.4. expdp ORA-39164
EXP-00051 表的分区找不到
1.3.5 ORA-01017: invalid username/password; logon denied
1.3.6. LRM-00101: unknown parameter name ‘string’
Cause: The parameter name was misspelled.
Action: Spell the parameter name correctly. 命令的参数名不正确。
对距离版的保存和复原 这一行代码是多余的 ,既然参数名在代码里是写死的而且是正确的,就根本不会出现这个异常,所以这一行代码是余的。
successIndex = InStr(strR, “LRM-00101”)
If successIndex <> 0 Then
_Status = False
strErrorMsg = Pb_ObjMsgFileLib.MsgRead(“ERROR”, “E0017”)
MsgBox(strErrorMsg, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)
Exit Sub
End If
1.3.7 ORA-01435:用户不存在 对应的是 imp
ORA-01918:用户不存在 对应的是 impdp
/disk7/data/tmp/backup/EXPDATA e x p T O G O / n e x f i l e = E X P N S T E 4047 2 0180601 P 1. d m p l o g = E X P N S T E 4047 2 0180601 P 1. l o g t a b l e s = N S T E 4047 : P A R T 1 i n d e x e s = n s t a t i s t i c s = n o n e / d i s k 7 / d a t a / t m p / b a c k u p / I M P D A T A imp TOGO/nex fromuser=TOGO touser=KAK file=EXP_NSTE4047_20180601_P1.dmp log=/disk7/data/tmp/backup/IMPLOG/IMP_NSTE4047_20180601_P1.log tables=NSTE4047:PART1 indexes=n ignore=y commit=y
1.3.8 ORA-01659: unable to allocate MINEXTENTS beyond string in tablespace string
Cause: Failed to find sufficient contiguous space to allocate MINEXTENTS for the segment being created.
Action: Use ALTER TABLESPACE ADD DATAFILE to add additional space to the tablespace or retry with smaller value for MINEXTENTS, NEXT or PCTINCREASE
1.3.9 ORA-12154: TNS:could not resolve the connect identifier specified
Cause: A connection to a database or other service was requested using a connect identifier, and the connect identifier specified could not be resolved into a connect descriptor using one of the naming methods configured. For example, if the type of connect identifier used was a net service name then the net service name could not be found in a naming method repository, or the repository could not be located or reached.
1.3.10 SP2-0310: 无法打开.sql文件 路径不对或者文件不存在
@/data/tmp/backup/SQL/AF_NST4047.SQL
1.3.11 ora-01536
超出表空间
补充的ora-xx
ora00933 sql 命令未正确结束
误:select * from nstr1010 t where t.ryo_no is not null rownum<=4 order by kiki_no asc
正确:select * from nstr1010 t where t.ryo_no is not null and rownum<=4 order by kiki_no asc
ora
ORA-00936:缺失表达式
sql语句的格式问题,例如引号的问题啊
ORA-14406: 更新的分区关键字在最高合法分区关键字之外
ORA-14400

1.3.12.pl/sql
出现的目的
sql 用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,
即不用指明执行的具体方法和途径,而是简单的调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。
然而,对于有些复杂的业务流程又要求相应的程序来描述,那么4GL就有些无能为力了。PL/SQL的出现正是为了解决这一问题,PL/SQL是一种过程化语言,属于第三代语言,
它与C,C++,Java等语言一样关注于处理细节,因此可以用来实现比较复杂的业务逻辑。
PL/SQL编程基础
掌握一门编程语言首要是要了解其基本的语法结构,即程序结构、数据类型、控制结构以及相应的内嵌函数(或编程接口)。
数据类型:确定变量在存储中占用多少空间和如何解释存储的位模式。
PL/SQL程序结构
从上面的PL/SQL程序段看出,整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以begin开头)和异常处理部分(以exception开头)。其中执行部分是必须的,其他两个部分可选。
无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。
变量声明与赋值
PL/SQL主要用于数据库编程,所以其所有数据类型跟oracle数据库里的字段类型是一一对应的,大体分为数字型、布尔型、字符型和日期型。为方便理解后面的例程,
这里简单介绍两种常用数据类型:number、varchar2。

SQL–结果集做导航
返回的数据存储在结果表中,称为结果集。
大多数数据库软件系统都允许使用编程函数在结果集中进行导航,例如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。
例如VB.NET

    'SQL文作成
    strSql = ""
    strSql = strSql & "SELECT   A.MTYMD, A.MTNO, A.SNDYMD, B.SNDFYMD, B.SNDTYMD, A.SYORIYMD, A.SNDSTS" & vbCrLf
    strSql = strSql & "FROM     NSTE1100 A, NSTE1035 B" & vbCrLf
    strSql = strSql & "WHERE    A.MTNO  = 1" & vbCrLf
    strSql = strSql & "AND      A.MTYMD = B.MTYMD" & vbCrLf
    strSql = strSql & "AND      A.MTNO = B.MTNO" & vbCrLf

    'ダイナセット作成           
    If Pb_ObjOracle.DoSelect(strSql, dynDTL) <> 0 Then
        dynDTL = Nothing
        Call Pb_ObjError.HandleError("Set_Dateil()")
    End If

dynDTL.MoveFirst()

      Do
        If dynDTL.EOF Then
            '対応する履歴情報なし
            strStatus = "履歴エラー"
            Set_detail = 2
        Else
            Select Case Ns(dynDTL.Fields("SNDSTS"))
                Case "01"
                    strStatus = "受 信 中"
                Case "02"
                    strStatus = "受 信 済 み"
                Case "09"
                    strStatus = "異 常 終 了"
                Case Else
                    strStatus = ""
            End Select
        End If

        Dim rst(5) As String

        rst(0) = Ns(IIf(dynDTL.Fields("MTYMD") = Nothing, "", dynDTL.Fields("MTYMD")))

        rst(1) = Nz(IIf(dynDTL.Fields("MTNO") = Nothing, "", dynDTL.Fields("MTNO")))

        '受信日              
        rst(2) = FormatEnDate(IIf(dynDTL.Fields("SNDYMD") = Nothing, "", dynDTL.Fields("SNDYMD")), "yyyy年MM月dd日")

        '対象期間
        rst(3) = FormatEnDate(IIf(dynDTL.Fields("SNDFYMD") = Nothing, "", dynDTL.Fields("SNDFYMD")), "yyyy年MM月dd日") & " ~ " & FormatEnDate(IIf(dynDTL.Fields("SNDTYMD") = Nothing, "", dynDTL.Fields("SNDTYMD")), "yyyy年MM月dd日")

        ' 受信状況
        rst(4) = strStatus

        '処理日時             
        rst(5) = FormatEnDate(IIf(dynDTL.Fields("SYORIYMD") = Nothing, "", dynDTL.Fields("SYORIYMD")), "yyyy/MM/dd HH:mm:ss")

        dblGrid.Rows.Add(rst)

        If dynDTL.EOF = False Then
            dynDTL.MoveNext()
        End If

    Loop While (Not dynDTL.EOF)

    dynDTL.Close()
    dynDTL = Nothing

SQL文
SQL选择不同(select distinct)
选择不同的列(字段),即去重
用法 SELECT DISTINCT column1, column2, … FROM table_name;
SELECT COUNT(DISTINCT Country) FROM Customers;

   WHERE 子句中的运算符
   LIKE、IN ,BETWEEN AND 、> < 的区别?
    LIKE的用法 
     LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
     有两个通配符与LIKE运算符一起使用:
     % - 百分号表示零个,一个或多个字符,_  - 下划线表示单个字符
     注意: MS Access使用问号(?)而不是下划线(_)。百分号和下划线也可以组合使用! 

     SQL Wildcards通配符
     在MS Access和SQL Server中,你也可以使用:
     [ charlist ] - 定义要匹配的字符的集合和范围
     [^ charlist ]或[!charlist ] - 定义不匹配字符的集合和范围

     以下SQL语句选择所有客户City不以"b"、"s"或"p"开头:
     SELECT * FROM Customers 
     WHERE City LIKE '[!bsp]%';   注意LIKE后面的大小写。
                                  例如 select *   from nstr1010  t where  t.host_id like 'N%'   有数据
                                       select *   from nstr1010  t where  t.host_id like 'n%'   没有数据
IN的用法
     IN运算符允许您在WHERE子句中指定多个值。
     IN运算符是多个OR条件的简写。
     用法实例 
        SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);
        SELECT * FROM Customers WHERE Country NOT IN ('Germany', 'France', 'UK');
   BETWEEN的用法
     BETWEEN运算符选择给定范围内的值。值可以是数字,文本或日期。
     BETWEEN运算符是包含性的:包括开始和结束值。
     用法实例
       SELECT * FROM Products WHERE (Price BETWEEN 10 AND 20) AND NOT CategoryID IN (1,2,3);
     请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!
     在一些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。 
     在一些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。
     在一些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。

   JOIN链接  
   SQL join 用于把来自两个或多个表的行结合起来
     INNER JOIN:如果表中有至少一个匹配,则返回行;不匹配,则不会列出行。
        内部链接INNER JOIN关键字选择两个表中具有匹配值的记录。
        用法
        SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

     LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行。如果在正确的表中没有匹配,结果是NULL。
        用法
        SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
        SELECT column_name(s) FROM table1 LEFT OUTER JOIN table2 ON table1.column_name=table2.column_name;

     RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行。如果左表没有匹配,则结果为NULL。
        用法
        SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name;
        SELECT column_name(s) FROM table1 RIGHT OUTER JOIN table2 ON table1.column_name = table2.column_name;

     FULL JOIN:只要其中一个表中存在匹配,则返回行。当左(表1)或右(表2)表记录匹配时,FULL OUTER JOIN关键字将返回所有记录。
        注意: FULL OUTER JOIN可能会返回非常大的结果集!
        用法
        SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

   SQL自联接
     自联接是一种常规联接,但表本身是连接的。
     用法
     SELECT column_name(s) FROM table1 T1, table1 T2 WHERE condition;
     用法实例
     SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City  ORDER BY A.City;

   UNION连接
     UNION连接:运算符用于组合两个或更多SELECT语句的结果集。
     UNION中的每个SELECT语句必须具有相同的列数,这些列也必须具有相似的数据类型,每个SELECT语句中的列也必须以相同的顺序排列
     用法
       SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
     注意
       默认情况下,UNION 运算符选择一个不同的值。如果允许重复值,请使用 UNION ALL。
   SELECT INTO 语句  
     使用 SQL,您可以将信息从一个表中复制到另一个表中。 
     SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中。
     用法
       SELECT * INTO newtable  FROM table1; 将使用SELECT语句中定义的列名和类型创建新表。您可以使用AS子句来应用一个新名称。
     注意 SELECT INTO 语句可以用于在另一种模式下创建一个新的空表。只需添加WHERE子句,使查询返回时没有数据:
     用法实例
     SELECT * INTO newtable FROM table1 WHERE 1=0;
   INSERT INTO SELECT 语句
     使用SQL,您可以将信息从一个表中复制到另一个表中。
     INSERT INTO SELECT 从表中复制数据,并将数据插入现有的表中。
    用法
    INSERT INTO table2 SELECT * FROM table1;
   撤销索引、撤销表以及撤销数据库 
     通过使用 DROP 语句,可以轻松地删除索引、表和数据库
     用法
       DROP INDEX index_name
       DROP TABLE table_name
       DROP DATABASE database_name
       TRUNCATE TABLE table_name
   CREATE DATABASE 语句
     CREATE DATABASE 语句用于创建数据库。
       用法
       CREATE DATABASE dbname;
   CREATE TABLE 语句
     CREATE TABLE 语句用于创建数据库中的表。
     表由行和列组成,每个表都必须有个表名。
     用法实例
     CREATE TABLE Persons(PersonID int,LastName varchar(255),FirstName varchar(255),Address varchar(255),City varchar(255));
   ALTER TABLE 语句
     ALTER TABLE 语句用于在现有表中添加、删除或修改列。  
     向表中添加列
     ALTER TABLE table_name ADD column_name datatype
     删除表中的列
     ALTER TABLE table_name DROP COLUMN column_name
     更改表中列的数据类型
     ALTER TABLE table_name MODIFY COLUMN column_name datatype
   AUTO INCREMENT 字段
     Auto-increment 会在新记录插入表中时生成一个唯一的数字。我们通常希望在每次插入新记录时自动创建主键字段的值。我们可以在表中创建一个自动增量(auto-increment)字段。
     用法实例
     您必须使用序列( sequence )对象(该对象生成数字序列)创建自动增量( auto-increment )字段。使用以下CREATSEQUENT语法:
     CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10
     上面的代码创建了一个名为seq_pean的序列( sequence) 对象,它以1开头,以1递增。此对象缓存10个值以提高性能。缓存选项指定要存储多少序列值以提高访问速度。要在"Persons" 表中插入新记录,我们必须使用nextval函数,该函数从seq_hor序列检索下一个值:
     INSERT INTO Persons (ID,FirstName,LastName) VALUES (seq_person.nextval,'Lars','Monsen')
   CREATE VIEW、REPLACE VIEW、 DROP VIEW 语句         
     视图是可视化的表。本章讲解如何创建、更新和删除视图。视图中的字段是一个或多个数据库中真实表中的字段。
   CREATE VIEW 语法
     用法
     CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
   SQL CREATE OR REPLACE VIEW 语法
     更新视图
     用法实例
     现在,我们希望向 "Current Product List" 视图添加 "Category" 列。我们将通过下列 SQL 更新视图:
     CREATE OR REPLACE VIEW [Current Product List] AS SELECT ProductID,ProductName,Category FROM Products WHERE Discontinued=No
   DROP VIEW
     删除视图  
   关键字排序 order by asc/desc 默认asc(升序)

   SQL NULL
     使用比较运算符(例如=,<或<>)来测试NULL值是不可行的。
     我们将不得不使用IS NULL和IS NOT NULL运算符。
     如果表中的列是可选的,那么我们可以插入一个新记录或更新一个现有记录,而无需向列添加一个值。这意味着该字段将存储为 NULL 。
     NULL 值的处理与其他值不同。
     NULL 为未知或不适当值的占位符。
     注释:无法比较 NULL 和 0;它们是不等价的。
   DELETE
     删除所有数据
     您可以删除表中的所有行,而不需要删除该表。这意味着表的结构、属性和索引将保持不变: 
   SQL SELECT TOP 子句
     SELECT TOP 子句用于指定要返回的记录数量。
     SELECT TOP子句在包含数千条记录的大型表上很有用。返回大量记录会影响性能。
     注:并不是所有的数据库系统都支持SELECT TOP子句。MySQL支持LIMIT子句来选择有限数量的记录,而Oracle使用ROWNUM。 
     例如:select *  from nstr1010  t where rownum<=4   
   Aliases 别名
     可以为表名称或列名称指定别名(Alias)
     SQL 别名用于为表或表中的列提供临时名称。 SQL 别名通常用于使列名更具可读性。 SQL 一个别名只存在于查询期间。 
     列的 SQL Alias 语法
       用法
       SELECT column_name AS alias_name FROM table_name;
     表的 SQL Alias 语法
       SELECT column_name(s)FROM table_name AS alias_name;
     注意
       在下列情况下使用别名是有用的: 查询涉及多个表 用于查询函数需要把两个或更多的列放在一起 列名长或可读性差
   SQL约束
     SQL约束用于指定表中数据的规则。
     约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。约束有列级和表级之分,列级约束作用于单一的列,而表级约束作用于整张数据表。
     约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

   创建表的时候加上列的备注。
   CREATE TABLE  EGINTGTUTGKN_HD (

GENERATION_KBN CHAR(2) NOT NULL INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’GENERATION_KBN’,’世代区分’); COMMENT ON COLUMN EGINTGTUTGKN_HD.GENERATION_KBN IS ”AA’~’AZ”;
,CHGSU NUMBER(2) NOT NULL INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’CHGSU’,’更新回数’); COMMENT ON COLUMN EGINTGTUTGKN_HD.CHGSU IS ‘11~99’;
,TBLUPDFLG CHAR(1) NOT NULL INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’TBLUPDFLG’,’テーブル更新フラグ’); “COMMENT ON COLUMN EGINTGTUTGKN_HD.TBLUPDFLG IS ‘使用する会社間乗継即時通知用テーブル(外環道)を判定するためのフラグ0 または 1 を設定’;”
,OUTRYJNUM NUMBER(3) NOT NULL INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’OUTRYJNUM’,’出口料金所数’); COMMENT ON COLUMN EGINTGTUTGKN_HD.OUTRYJNUM IS ‘出口、入出口向け出口通行料金テーブル数’;
,OUTRYJCD CHAR(6) NOT NULL INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’OUTRYJCD’,’出口料金所番号’); COMMENT ON COLUMN EGINTGTUTGKN_HD.OUTRYJCD IS ‘012で始まる出口、入出口番号’;
,RYJNUM NUMBER(3) NOT NULL INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’RYJNUM’,’該当入口料金所数’); COMMENT ON COLUMN EGINTGTUTGKN_HD.RYJNUM IS ‘該当出口に対する入口料金所テーブル数’;
,UPDDTM DATE INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’UPDDTM’,’更新日時’); COMMENT ON COLUMN EGINTGTUTGKN_HD.UPDDTM IS ‘トリガーにてシステム日付をセット(YYYYMMDDHH24MISS形式)’;
,INSDTM DATE INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’INSDTM’,’登録日時’); COMMENT ON COLUMN EGINTGTUTGKN_HD.INSDTM IS ‘レコードの登録日時’;
,LAST_USRID VARCHAR2(20) INSERT INTO CHGCOL VALUES(‘EGINTGTUTGKN_HD’,’LAST_USRID’,’最終更新ユーザID’); “COMMENT ON COLUMN EGINTGTUTGKN_HD.LAST_USRID IS ‘レコードを更新したプログラム名及びユーザIDサーバ処理:プログラムID端末処理:画面番号+ログインユーザID’;”
);

1.3.13常用函数
DECODE(VALUE,’0’,’1’,’2’)的用法,类似于iif
若value为0,则为1,否则为2

2.Vb.net
2.1 主画面与子画面父子关系不对应,ShowDialog()出现阻塞
对距离版保存机能 C:\NEXIND\BACKETCFF\Develop\NCXE1240
Private Sub OnTimedEvent(source As Object, e As System.Timers.ElapsedEventArgs)
Dim intOK As Short

    On Error GoTo Save_ERR
    TimerThread.Stop()

    picProgressBar.Enabled = True

    Select Case intFunction
        Case 0
            'ファイルの削除
            If intFirst = 1 Then
                Call dirClear()
            Else
                intFunction = intFunction + 1
            End If
        Case 1
            'expdpコマンドの実行
            Call saveExcute()
        Case 2
            lbl_TableName.Text = "LTO保存処理中"
            lbl_Progress.Text = ""
            Call dmpFileToLTO()
        Case 3
            If intFirst = 1 Then
                'バックアップ履歴情報更新
                Call backLogInsert()

                strErrorMsg = Pb_ObjMsgFileLib.MsgRead("MESSAGE", "M0010") & vbNewLine & Pb_ObjMsgFileLib.MsgRead("MESSAGE", "M0011") & vbNewLine & Pb_ObjMsgFileLib.MsgRead("MESSAGE", "M0012")
                picProgressBar.Enabled = False
                'Me.Visible = False
                Dim size As Size = frm_NCXE1102.ActiveForm.Size
                frm_NCXE1102.ActiveForm.Size = New Size(0, 0)
                intOK = MsgBox(strErrorMsg, MsgBoxStyle.OkCancel + MsgBoxStyle.Question)
                If intOK = 1 Then
                    lbl_TableName.Text = "副本の保存処理を始める。"
                    lbl_Progress.Text = ""
                    picProgressBar.Enabled = True
                    lbl_Progress.Text = ""
                    TimerThread.Start()
                    intFunction = 2
                    intFirst = 2
                    'Me.Visible = True
                    frm_NCXE1102.ActiveForm.Size = size
                    Exit Sub
                End If
            End If

            strErrorMsg = Pb_ObjMsgFileLib.MsgRead("MESSAGE", "M0008")
            picProgressBar.Enabled = False
            Me.Visible = False
            MsgBox(strErrorMsg, MsgBoxStyle.OkOnly + MsgBoxStyle.Information)
            Me.Cursor = System.Windows.Forms.Cursors.Default
            TimerThread.Stop()
            Me.Close()
    End Select

    Exit Sub

Save_ERR:
‘保存処理が途中で失敗した場合は、メッセージを表示する。
picProgressBar.Enabled = False
MsgBox(Pb_ObjMsgFileLib.MsgRead(“ERROR”, “E0010”), MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)
Me.Visible = False
Me.Close()
End Sub

2.2 vs2017 编译出错
1.lc.exe -> licenses.licx 出错 针对错误对应修改 licenses的内容
2.dll出错 一般在system目录下会有

2.3 手顺制作时发生的错误
错误现象:OracleConnection.ConnectionString无效使用
InvalidOperationException 类 当方法调用对于对象的当前状态无效时引发的异常。 也就是说对对象的里面的属性为空,当有方法想要调用她时,失败。 代码如下

‘Pb_ObjOracle = New cls_NCCA1010 这一行代码当是没有注释掉,后来调查发现原因是:New cls_NCCA1010会实例化一个OracleConnection

    '' 初期化ファイルの読み込み
    strIni = My.Application.Info.DirectoryPath & "\NEXETC.INI"
    If Dir(strIni) = vbNullString Then
        Call MsgBox("初期化ファイルがありません。", MsgBoxStyle.Critical Or MsgBoxStyle.OkOnly, Pb_strSystemName)
        NewSystemSetting = 2
        Exit Function
    End If
    objIni = New cls_NCCA1020
    objIni.FileName = strIni

    ''' オラクル接続情報の取得
    'objIni.Section = "Oracle"
    'Pb_ObjOracle.LogID = objIni.GetString("LogID", vbNullString)
    'Pb_ObjOracle.PassWord = objIni.GetString("PassWord", vbNullString)
    'Pb_ObjOracle.Host = objIni.GetString("HOST_STRING", vbNullString)
    'boolRet = Pb_ObjOracle.ConnectDB

    'If Not boolRet Then
    '    Call Pb_ObjError.HandleError("SystemSetting()")
    '    NewSystemSetting = -1
    '    Exit Function
    'End If

2.4 vb.net的Me的用法
在VB6中Me只能应用于窗体,但在.NET中就没用这个限制了。这是最大的区别。
与C/C++的this指针相同。
在类内使用,代表当前类。
在窗体模块中代表当前窗体,在类模块中代表当前类。
如:
在Form1窗体模块中Me就代表Form1
Form1.Caption在Form1窗体模块中可以用Me.Caption使用。
如:
再建立一个类模块叫Class1,在类模块中使用Me就代表Class1这个类。
当然,Me关键字并不能完全代替当前类的名字。如果使用的是静态方法只能用类的名字,不能用Me。

2.5 清除combox 内容
1)如果ComboBox中的不是通过数据绑定得到的,用ComboBox.Items.Clear 方法 从 ComboBox 中移除所有项。
‘清除所有项
ComboBox1.Items.Clear()
‘清除ComboBox1显示
ComboBox1.ResetText()
2)如果ComboBox中的是通过数据绑定得到的,在用ComboBox.Items.Clear 方法 从 ComboBox 中移除所有项之前,先断开绑定的数据源。
‘断开数据源
ComboBox1.DataSource = Nothing
‘清除所有项
ComboBox1.Items.Clear()
‘清除ComboBox1显示
ComboBox1.ResetText()

数据绑定
作用:通过修改数据,datagridview就会相应得显示,操作简单
实现方式:

Winform ComboBox的DropDownStyle 属性的几种形式
DropDown: 是它的默认属性,这种形式下ComboBox的值可以从下拉列表选择也可以手动输入,并且手动输入的值是不受限制的。
DropDownList:值只能在下拉列表里面选不能手动输入。
imple: 感觉就是一个TextBox。

2.6将datatable的某列转化成list
”曜日通行料金マスタ(データ)(EGIYBIPAY_DE)から世代区分ごとの料金パターン番号を取得する。
Dim arraylistIriguchiTsuukouRyoukinPtn As ArrayList = New ArrayList
Dim dataTableIriguchiTsuukouRyoukin As DataTable = business.SearchIriguchiTsuukouRyoukinMstPtnno()

    For i As Integer = 0 To dataTableIriguchiTsuukouRyoukin.Rows.Count - 1
        arraylistIriguchiTsuukouRyoukinPtn.Add(dataTableIriguchiTsuukouRyoukin.Rows(i).Item("PTNNO"))
    Next
    Me.cmbIriguchiTsuukouRyoukinMst.DataSource = arraylistIriguchiTsuukouRyoukinPtn

2.7DataGridView 单击选中一整行,只能单选,不能选择多行,只能选择一行
设置DataGridView的属性SelectionMode为FullRowSelect
这样就使DataGridView不是选择一个字段,而是选择一整行了

设置DataGridView的属性MultiSelect为false
这样就使DataGridView不能够选择多行,只能选择一行了
https://blog.csdn.net/chowfirst/article/details/26245615

3操作系统
inux/unilx
3.1Unix shell 常用命令
https://blog.csdn.net/qwertyupoiuytr/article/details/53999471

Unix/Unix Shell – sh, ksh, csh
https://blog.csdn.net/lyncai/article/details/51751386
ksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。
3.2
FTP访问根目录外的其他目录?
ftp登录服务器对应的是根目录,若需要访问其他目录,需要将路径变成绝对路径。
若要获取的实例 FtpWebRequest, ,使用 Create 方法。 您还可以使用 WebClient 类上载和下载从 FTP 服务器的信息。 使用任一种方法,当您指定使用 FTP 方案的网络资源 (例如, “ftp://contoso.com“) FtpWebRequest 类提供以编程方式与 FTP 服务器交互的能力。
该 URI 可以是相对值还是绝对值。 如果窗体的 URI 为 “ftp://contoso.com/%2fpath” (%2f 是转义字符 /),则该 URI 是绝对的并是当前目录 /path。 如果,但是,该 URI 是窗体的 “ftp://contoso.com/path“, ,.NET Framework 首次登录到 FTP 服务器 (通过使用用户名和密码设置 Credentials 属性),则当前目录设置为 /path。
您必须具有有效的用户名和密码的服务器或服务器必须允许匿名登录。 您可以指定用来设置连接到服务器的凭据 Credentials 属性也可以将它们包含在 UserInfo URI 部分传递到 Create 方法。 如果包含 UserInfo 在 URI 中,信息 Credentials 属性设置为指定的用户名和密码信息与新的网络凭据。

3.3unix常用命令
Passwd 修改用户密码
Pwd 打印当前目录
Cd 改变目录
Ls 列出目录中文件
Wildcards *,?任何数量字符与单个字符
File 打印出文件的类型
Cat 显示文件内容
Pr 显示文件内容
Pg或page 一闪一页显示文件内容
More 一次一页显示文件内容
Clear 清除屏幕内容
Cp或copy 复制文件
Chown 修改文件所有
Chgrp 修改文件所在的组
Chmod 修改文件模式权限
Rm 从系统中删除文件
Mv 重命名文件
Mkdir 创建目录
Rmdir 删除目录
Grep 模式匹配
Egrep 用于扩展正则表达式的grep
Find 用于定位文件和目录

     追加到文件尾
重定向、创建或覆盖文件
|      管道符,将命令排列在一起
|| 逻辑或(OR)
&     命令在后台执行
&&  逻辑与(AND)
Date 显示系统日期和时间
Echo 将字符串写入标准输出
Sleep 执行过程在指定的秒数内中断
Wc 计算文件中的单词,行,字符数
Head 查看文件开始
Tail 查看文件结尾
Diff 比较两个文件
Sdiff 并排比较两个文件(132个字符)
Spell 拼写检查器
Lp,lpr,enq,qprt 打印文件
Lpstat 系统打印队列状态
Enable 启用或启动打印队列
Disable 禁用或停止打印队列
Cal 显示一个日历
Who    显示系统用户信息
W     扩展的WHO命令
Whoami 显示 L O G N A M E USER环境变量
Who am I 显示登录名,终端,登录日期/时间以及登录位置
F,finger 关于登录用户的信息
Talk 两个用户进行一个分屏式对话
Write 在某个用户屏幕上显示一条消息
Wall 在所有登录用户的屏幕上显示一条消息
Rwall 显示一条消息给远程主机上的所有用户
Rsh/remsh 在远程主机上执行一个命令或进行登录
Df 文件系统统计数字
Ps     关于当前正在进行的进程信息
Netstat 显示网络状态
Vmstat 显示虚拟内存状态
Iostat 显示输入/输出状态
Uname 当前操作系统名称及机器信息
Sar 系统活动报告
Basename 字符串参数的基本文件名
Man 显示联机参考手册
Su 切换到另一用户:super-user
Cut 写入所选择的字符
Awk 解析字符的编程语言
Sed 用于字符替换的字符语言
Vi 启动VI编辑器
Emacs 启动emacs编辑器

3.4 unlix 磁带管理的命令
博客链接地址:https://blog.csdn.net/linuxnews/article/details/51582883
磁带设备应只用于定期的文件归档或将数据从一台服务器传送至另一台。通常磁带设备与 Unix 机器连接,用 mt 或 mtx 控制。强烈建议您将所有的数据同时备份到磁盘(也许是云中)和磁带设备中。

Last login: Wed May 30 15:12:55 2018 from 10.10.78.124
Oracle Corporation SunOS 5.11 11.3 September 2015
百度知道: https://zhidao.baidu.com/question/88075217.html
nexsv@solaris115:~ k s h n e x s v @ s o l a r i s 115 :   /bin/rm -R /disk7/data/tmp/backup/IMPDATA/*
rm: /disk7/data/tmp/backup/IMPDATA/IMP_NSTE4047_20180530_P1.log: override protection 644 (yes/no)?

修改为
nexsv@solaris115:~ k s h n e x s v @ s o l a r i s 115 :   /bin/rm -fR /disk7/data/tmp/backup/IMPDATA/* rm -f rm 删除文件 -f参数加上后表示强制删除,不需要Y/N了。

4java

4.1 java参数传递两种方式
4.1.1按值传递
在调用函数时直接将实际参数复制传递到函数中,不会对实际参数做如何修改,实质就是直接复制,这样的操作当数据量大的时候,会占用的内存空间会更大这样效率就会很低。举例如下
Class ValuePass
{
Public static void main (string[] args )
{
ValuePass vp=new ValuePass();
int param=20;
vp.setParam(parm);
System.out.println(“值传递之后:”+param);
}
public void setparam(int a){
a=a+10;
System.out.println(“值传递参数:”+a)
}

}

实验结果:
值传递参数:30
值传递之后:20

4.4.2引用传递
引用传递解决的就是按值传递的效率低下的问题,引用传递实际就是讲内存地址传过去,操作的是源数据
链接地址:
https://zhidao.baidu.com/question/295083208.html

5工具网站
5.1 菜鸟网站不错
http://www.runoob.com/w3cnote/front-end-engineers-required-skills.html

5.2.编程学习网站
进阶w3cschool

问答Stackoverflow

社区 博客园 编程中国 csdn

6.vba
名前编辑 ctrl+f3

猜你喜欢

转载自blog.csdn.net/weixin_41415996/article/details/81411724