SQL 查询指定行的数据

SQL 查询指定行的数据,第1张

什么数据库\x0d\如果是 Oracle 或者 SQL Server 的话。 可以\x0d\\x0d\SELECT\x0d\ \x0d\FROM\x0d\(\x0d\ SELECT ROW_NUMBER() OVER( ORDER BY 排序的字段 ) AS 序号\x0d\ 表\x0d\ FROM\x0d\ 表\x0d\) tmp\x0d\WHERE\x0d\ tmp序号 = 12345\x0d\\x0d\如果是 MySQL 的话, 直接\x0d\SELECT FROM 表 LIMIT 12344, 1\x0d\注:\x0d\LIMIT 接受一个或两个数字参数。\x0d\参数必须是一个整数常量。\x0d\如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,\x0d\第二个参数指定返回记录行的最大数目。\x0d\初始记录行的偏移量是 0(而不是 1)

<html>

<head>

<meta >

for

(int

i

=

0;

i

<

dsTables[0]RowsCount;

i++)

{

tels=dsTables[0]Rows["UserTel"]ToString();

———这句话放在循环里

你又不用i

}

改成这样你看

行不行

public

string

GetMobiles(string

groupname);

{

private

List

tels;

AccessLink

al

=

new

AccessLink();

sql

=

"select

UserName,

UserTel

from

tb_tel

where

UserSex

=

'"

+

groupname

+

"'";

DataSet

ds

=

new

DataSet();

ds

=

alAccessSel(sql);

tels

=

new

List

();

for

(int

i

=

0;

i

<

dsTables[0]RowsCount;

i++)

{

tels=dsTables[0]Rows[i]["UserTel"]ToString();

}

return

tels;

}

selstr = "select form 备件表 where 备件编号=" & DataList1BoundText

你把一个原本简单的问题自个想象成很复杂的了

首先,html各种域传值到servlet中都是用的name,与id无关。

html:

<select name="aaa"><option value="-1">选择一个</option><option value="1">1111</option></select>

servlet:

String strValue = requestgetParameter("aaa")获得选中的option的value,

如果html有多个select的name都是aaa的话,可以用

String[] strValues = requestgetParameterValues("aaa")

获得数组。

问题一

给你个小例子

//JSP接收客户端注册信息并输出

<%

String

username

=

requestgetParameter("username");

String

password

=

requestgetParameter("password");

String

con_password=

requestgetParameter("con_password");

String

email

=

requestgetParameter("email");

%>

用户名:<%=username

%><br/>

密码:<%=password

%><br/>

确认密码:<%=con_password

%><br/>

电子邮箱

:<%=email

%>

问题二

需要明确需求写查询语句

还要知道你表的i相关字段

关联

外键

基本知识

Oracle 的  SQL LOADER  可以将外部格式化的文本数据加载到数据库表中 通常 与 SPOOL导出文本数据方法配合使用

命令格式

SQLLDR keyword=value [ keyword=value ……]

例 $ sqlldr user/pwd control=emp ctl data=emp dat bad=emp bad log=emp log

控制文件

SQLLOADER  根据控制文件可以找到需要加载的数据 并且分析和解释这些数据

控制文件由三个部分组成 具体参数参考帮助文档   全局选件 行 跳过的记录数等 INFILE 子句指定的输入数据   数据特性说明

ment ——注释

load data infile

append    ——除了 append外 还有 insert replace truncate等方式

into table emp fields terminated b y |

no             float external name char( )

age           integer external

duty         char( ) salary      float external

upd_ts     date( ) YYYYMMDDHH MISS )

begindata

|Mulder| | | |

|Scully| | | |

控制文件中infile选项跟sqlldr 命令行中data 选项含义相同 如使用infile 则表明数据在本控制文件以 begin data 开头的区域内 一些选项 FIELDS TERMINATED BY WHITESPACE FIELDS TERMINATED BY x FILLER_ FILLER //  指定某一列将不会被装载

DEPTNO position( ) DNAME position( ) //  指定列的位置SEQNO RECNUM //载入每行的行号

SKIP n          //  指定导入时可以跳过多少行数据

数据文件

按控制文件数据格式定义的数据行集

|Tom| | | |

|Jerry| | | |

固定格式 可变格式 流记录格式

固定格式

当数据固定的格式(长度一样)时且是在文件中得到时 要用 INFILE fix n

load data

infile example dat fix

into table example

fields terminated b y optionally enclosed by

(col char( ) col char( )) example dat

cd fghi

lmn

pqrs

uvwx

可变格式

当数据是可变格式(长度不一样)时且是在文件中得到时 要用 INFILE var n 如

load data

infile example dat var

into table example

fields terminated b y optionally enclosed by

(col char( ) col char( )) example dat

hello cd world im

my name is

流记录格式 // Stream recored format load data infile xx dat str |\n

into table xx field terminated b y optionally enclosed by

(col char( ) col char( ))

example dat

hello ccd |

world bb |

  坏文件

bad=emp bad坏文件包含那些被 SQLLoader拒绝的记录 被拒绝的记录可能是不符合要求的记录

  日志文件及日志信息

log=emp log当 SQLLoader  开始执行后 它就自动建立  日志文件 日志文件包含有加载的总 结 加载中的错误信息等

  高级选项

Conventional Path Load与Direct Path Load

Conventional path Load 通过常规通道方式上载

特点 mit always  gen redo logs   enforce all constraints fire insert triggers can load into cluster other user can make change

rows 每次提交的记录数

bindsize 每次提交记录的缓冲区

readsize 与 bindsize 成对使用 其中较小者会自动调整到较大者

sqlldr 先计算单条记录长度 乘以 rows 如小于 bindsize 不会试图扩张 rows以填充 bindsize 如超出 则以 bindsize 为准 命令为

$ sqlldr dbuser/oracle control=emp ctl log=emp log rows= bindsize=

Direct Path Load

通过直通方式上载 可以跳过数据库的相关逻辑 不进行  SQL解析 而直接将数 据导入到数据文件中

特点 save conditionly gen redo logs enforce PK UK NN not fire triggers can not load into cluster other user can not make change命令为

$ sqlldr dbuser/oracle control=emp ctl log=emp log direct=true

SPOOL导出文本数据方法

导入的数据文件可以用 SPOOL导出文本数据方法生成

SQLPLUS环境设置

SET NEWPAGE NONE HEADING OFF SPACE

PAGESIZE SET TRIMOUT ON TRIMSPOOL ON LINESIZE

注 LINESIZE 要稍微设置大些 免得数据被截断 它应和相应的 TRIMSPOOL结合使用防止导出的文本有太多的尾部空格

但是如果 LINESIZE 设置太大 会大大降低导出的速度 另外在 WINDOWS下导 出最好不要用 PLSQL导出 速度比较慢 直接用  MEND 下的 SQLPLUS命令最 小化窗口执行 对于字段内包含很多回车换行符的应该给与过滤 形成比较规矩的文本 文件

通常情况下 我们使用 SPOOL方法 将数据库中的表导出为文本文件 如下述

set trimspool on

set linesize pagesize newpage heading off    term off spool  路径+文件名

select col || ||col || ||col || ||col || …… from tablename

spool off

脚本

  将表中数据记录导出为字段值用分隔符 | 分开的 dat文件

#!/bin/ksh

##################################################################

##    名称 unloadtable

##    功能   本 shell 用于将表中数据记录导出

##                 导出为字段值用分隔符 | 分开的 dat文件

##    编者

##    日期

##################################################################

if [ $# ne ]

then echo usage unloadtable tablename username password

exit

fi

##准备工作

echo set heading off     >/tmp/$l

echo set pagesize >>/tmp/$l

echo set linesize     >>/tmp/$l

echo set feedback off    >>/tmp/$l

echo set tab off              >>/tmp/$l

echo  select  column_name||   from  user_tab_columns  where  lower(table_name)= $   order  by

column_id >> /tmp/$l

##产生 select 语句

echo set heading off     >/tmp/$ sel

echo set pagesize >>/tmp/$ sel

echo set linesize     >>/tmp/$ sel

echo set feedback off    >>/tmp/$ sel

echo set tab off              >>/tmp/$ sel

echo select >>/tmp/$ sel

echo  `sqlplus  s  $ /$   <  /tmp/$l`  |sed  s/ /|| | ||/g   |sed  s/||$//g |sed  s/date/\ date\ /g

>>/tmp/$ sel

##生成 dat文件

#echo from $ \n/ >>/tmp/$ sel    由于  /  导致多执行一次 select

echo from $ \n >>/tmp/$ sel

sqlplus s $ /$ < /tmp/$ sel >$ _tmp dat

#awk {if(FNR!= ) print $ } $ _tmp dat >$ dat       FNR 选项使得第一条记录选不出

awk {print $ } $ _tmp dat >$ dat

rm f $ _tmp dat

  将数据导入到相应表中

#!/bin/ksh

##################################################################

##    名称 loadtable

##    功能 本 shell 用于将已经准备好的 dat数据文件导入相应的表中

##               dat 文件各个字段值用分隔符 | 分开

##    编者

##    日期

##################################################################

if [ $# ne ]

then

echo usage loadtable tablename username    password exit fi

##准备工作

echo set heading off     >/tmp/$lsql

echo set pagesize >>/tmp/$lsql

echo set linesize     >>/tmp/$lsql

echo set feedback off    >>/tmp/$lsql

echo set tab off              >>/tmp/$lsql

echo  select  column_name||   from  user_tab_columns  where  lower(table_name)= $   order  by

column_id >> /tmp/$lsql

##产生 ctl文件

echo load data >/tmp/$ ctl

echo infile >>/tmp/$ ctl

echo into table $ >>/tmp/$ ctl

echo fields terminated by | >>/tmp/$ ctl

echo `sqlplus s $ /$ < /tmp/$lsql` |sed s/ $/)/g |sed s/^/(/g >>/tmp/$ ctl

##开始导入数据

echo truncate table $ >/tmp/$ sql

sqlplus $ /$ < /tmp/$ sql

lishixinzhi/Article/program/Oracle/201311/17312

希望对你有帮助

从数据库中取数据有三种方式:OPEN SQL NATIVE SQL和LOGICAL DATABASE,LOGICAL DATABASE相对于前两种方式,有下列优势:

l 它是按照primary key sequence来取数据的

l 可以在logic database program加入权限检查

l 可以自动产生selection screen使查询更加灵活

l 程序员不需要知道logical database中表之间的具体关系

l 对于logical database的性能优化可以影响到使用它的任何程序

l 维护和增强可以实现中央处理

46C中SAP提供了大约190个logical database。如果logical database有三个字符,前两个是logical database的名字第三个是logical database的application area。看每个字符代表的那个application area可以通过程序的attribute的application field的F4来查看。只有executable或report可以使用logical database。关键字NODE <node>,决定了logical database中的那个node要被使用,NODES为这个node准备响应的存储空间(work area或table area由node type来决定)。在46中tables仍然可以被使用。当logical database从数据库中读取数据时就会执行PUT <node>从而触发GET事件,GET <node>并不取数据。事件的执行顺序是由logical database本身的结构决定的。在get event中使用fields很很重要就像OPEN SQL中尽量避免SELECT 一样。Logical database是由很多subobjects组成的,structure决定了hierarchy以及数据的读取顺序。Node name最多有14个字符组成,有四种Node type:

l Table(type T):node name是一个transparent table name,node name和table name的名称必须一致,不允许deep types。

l DDIC type(type S):任何Node name都可以,node type由dictionary中的structure或table type来决定,允许deep types。

l Type groups(type C):node type是在type group中定义,type group name必须在Type group field中维护。应当优先使用DDIC TYPE以便像SAP QUERY这样的应用也可以使用。

l Dynamic nodes(type A):没有固定的type,它在程序运行时才能够确定。

报表的START-OF-SELECTION在所有的get events之前发生,END-OF-SELECTION在所有的get events之后发生。GET <node> events一旦从logical database中取得数据时都回触发,所以这个事件会被多次触发。Get events的执行顺序由logical database的结构决定。当节点的所有子节点都被处理后再节点的下一个数据被处理之前就会触发GET <node> LATE事件,在事件开始系统会自动创建一line feed,并把color,font和intensity设为系统默认,如果在其他事件中设置了color,也会被重设为系统默认。CHECK结束当前事件,STOP结束程序处理执行END-OF-SELECTION,在END-OF-SELECTION中的STOP,则之际显示list buffer。EXIT结束程序处理,也不执行END-OF-SELECTION,直接显示list buffer中的内容。

还可以使用REJECT,当前的处理被终止,还可以在下一次数据读取时触发。Logical database程序有一个include:db<name>sel,这里定义了logical database的selection screen。For node把selection分配给单个的logical node。Selection screen的屏幕形式由程序中的nodes表达式决定。Field selection可以由Logical database程序中的node决定,这个通过SELECTION-SCREEN中的FIELD SELECTION FOR NODE决定。Logical database程序中的这段代码可以使application program中通过GET <node> FIELD <field list>来限制取出数据的数量,logical database程序中可以为某个Node设置dynamic selection,在语句中可以通过addition:DYNAMIC SELECTIONS FOR NODE来实现,这样Dynamic selection button就会在你的报表的selection screen中出现。另外logical database还可以定义不同的selection screen version。如果你在报表程序中指定了一个logical database,你就可以使用logical database的selection screen了。如果在report程序中你只指定了logical database的子节点,其上层的节点的筛选条件也可以被使用。对于T(table)类型的node,可以通过TABLES来声明它的work area。值得注意的是logical database总是按照自己的结构来读取数据的,所以当你需要读取logical database的比较深层次的node的数据的时候,你需要考虑换一个其所在层次比较高的logical database或者自己写取数逻辑。Selection view决定了什么样的字段会显示在selection screen。可以创建类型为CUS的自己的view,或者覆盖类型为SAP的view。

Logical database程序的命名规则是:SAPDB<ldbname>其中ldbname是logical database的名称。这些程序是由subroutine组成的,每个subroutine对应于一个事件。例如subroutine <init>是在logical database程序启动前执行,用来初始化变量和屏幕选择。还有其他的一些subroutine也是在屏幕的PBO或PAI事件中发生的。例如AUTHORITY CHECK是在PAI中发生的。数据库访问是在put_<node> subroutine中实现的。这个subroutine可能会被多次执行,这取决于屏幕的选择条件。这些subroutine的执行顺序由logical database的structure来决定。使用logical database的report在执行时控制权首先属于logical database program。每个事件在logical database program中都有一个对应的subroutine。在LDB和相应的report之间交互的时候LDB中的subroutine都会先执行。Logical database program读取数据的顺序是按照其structure执行的,总是从最顶部向下循环。LDB program是通过PUT_<NODE> subroutine来访问数据的,在PUT event中,control由LDB program传向report program的GET EVENT。取出来的数据或放到report program相应的work area中。GET event一旦执行完毕control就会还给LDB program。Data read的depth是由report program的GET event来决定的。如果node的某个field没有筛选条件,可以在report program中增加这个字段select-options在这个node的GET event中通过check来筛选。

以上就是关于SQL 查询指定行的数据全部的内容,包括:SQL 查询指定行的数据、能否实现表单的select元素中输入文字、c# 读取数据库表中某一个字段的多条值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9727969.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存