从access数据的某一行记录中获取后一个字段的值

 

access数据库名字:UserSign.mdb,表名:UserSignTable,字段名 ID,UserName,Password,TrueName(除了ID都是文本)
我这样在数据库中查找:
                 string ole = "select*from UserSignTable where [UserName]='" + this.TextName.Text + "' AND [Password]='" + this.TextPassword.Text + "'";///这是选取合适的用户名和密码
                                 if (myDs.Tables[0].Rows.Count > 0)///如果有记录,那么登陆成功
我感觉我的方法好笨,求指点下怎么改简单点,再就是希望高人能告诉我怎么提取这条记录的字段TrueName的值,要在别处用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA WEB框架,java网站一个模块只用写一个文件 以的servlet在现在的开发已经不怎么常见,因为操作起来比较原始和麻烦。有些人就是不安于现状去改造它。 做得好的有Struts,Hybernate,Spring那么这些框架都是很成功的,但是它们在使用的时候都少不了要配置这配置那搞得初学者晕头转向的。那么黄迎斌在些推出最近自己研发一套框架,欢迎大家使用。 此框架将数据库操作简化为0,基本不用管数据库,后台模块只用写一个文件! 框架基础: jdk1.6以上版本, 数据库mysql5.5以上或者access2003以上 netbeans IDE7.0以上。 tomcat7.0以上 java ee 6.0 说明: 这个案例是黄迎斌封装servlet的成功案例,下面就其配置做详细说明。 使用规范: 1.数据表的名字必需和实体POJO类的名字一致。POJO类可以通过另一工具DBReverse自动生成。例如:数据库有user表那么必需有一个POJO类名为User.jsva(大小写忽略) 2.所有表单里面的参数名必需和数据库里面的字段名一致。例如添加一个用户的时候,user表有name和id两个字段,那么在表单必需有两个<input>name分别为name和id(大小写忽略) 3.每一个控制层的跳转必需要带上参数mode,mode可为: OTHER//其它,SHOWONE//显示单例,SHOWLIST//显示列表, ADD //添加记录,UPDATE//更新记录, EDIT//编辑记录,DELETE//删除记录(大小写忽略) 包介绍: baseservlet 封装servlet的包不用改,直接引用。 |___DataGet.java封装了request.getParameter的方法。直接给一个实例,它自动根据传来的参数把set到相应的成员表变去。 |___GetAdm.java封装了权限获得的方法。有一个常量MANAGEERPOWER数为管理员权限。做项目时自行设置。(修改“=”后的就可以) |___HyberbinServlet.java封装了Servlet,以后写的sevlet直接继承这个类就可以。里面有一个抽象类execute,在继承的类必需实现这个方法。 database 封装了数据库的所有操作,每次配置数据库的时候只需要修改DatabaseINI.java的相关配置就可以,其它的直接引用。 |___DatabaseAccess.java 封装了底层数据库的操作,可以用来更新、修改、删除、查询操作。注意:这个类只允许DatabaseINI.java调用其它任何类调用都是不规范的。 |___DatabaseINI.java 封装了获得DatabaseAccess的方法,每次项目只需修改dbUrl,dbType,user,pass参数就可以。要获得DatabaseAccess对象只需调用getDatabase()方法就可以。 |___GetSql.java 自动生成sql语句。在本框架基本上不直接使用。 |___Hyberbin.java 进一步封装了数据库的操作,用户不直接对数据库操作,只要给出实体POJO类,数据可以自动查询、修改、删除、插入 servlet 用户自己的包,完成相应模块的功能。 |___Szdw.java POJO类,对应数据库szdw表(名字一致),里面所有成员变量都对应数据库一个字段。 |___SzdwServlet.java 用户自己写的servlet,在public class 上面一行有如下说明:@WebServlet(name = "SzdwServlet", urlPatterns = {"/Szdw.jsp"})告诉tomcat这个servlet的名字和路径。 框架流程详解: 用户请求:(必需有mode告诉servlet请求类型)-》servlet(获得请求类型转化为event)->调用execute方法(解析event)->调用相应的方法-》发送数据到用户浏览器。 例如本案例是师资队伍的相关模块。 要显示整个师资队伍,那么流程如下: 1.用户请求:http://localhost:8080/HybServlet/Szdw.jsp?mode=showlist (注意:必带mode) 2.servlet获得请求类型转化为event=SHOWLIST=2; 3.执行execute方法,解析到SHOWLIST要完成以下动作showlist();send = "szdw.jsp";break;,showlist()完成收集数据存储在request对象。 4.send到szdw.jsp即用户看到的师资队伍。 上面的流程servlet除了mode没有需要得到上文有关数据,所以在execute不需要调用load(formbean)方法。 下面看一下另一种情况,添加一个老师到师资队伍: 1.用户请求:action=Szdw.jsp?mode=add 填写相关的表单,例如xm(姓名),xb(性别)……(表单的name和数据库字段保持一致) 2.servlet获得请求类型转化为event=ADD=3; 3.执行execute方法,解析到ADD要完成以下动作load(szdw);add();showlist();send = "szdw.jsp";break;,注意load()方法自动将相关参数set到formbean去不需要用户再调用request.getParameter()。 4.send到szdw.jsp即用户看到的师资队伍。 还有一种情况就是用户所需要接收的参数不在数据库,那么调用load()是得不到效果的。那么这时候自己可以按以的方法用request.getParameter()去获得 Hyberbin工具详解: Hyberbin.java进一步封装了数据库的操作,用户不直接对数据库操作,给数据库的操作带来了极大的简便。其使用方法如下。 1.例如当要向数据库表szdw添加数据: 那么在构造Hyberbin的时候需要给出需要插入的szdw数据放在szdw的POJO类去,还要给出szdw表的主键是id. 现有 Szdw szdw;里面有所有关于要插入这个表的教师的相关信息 构造Hyberbin:Hyberbin hyberbin=new Hyberbin(szdw,"id"); 插入:boolean b = hyberbin.addByNoKey();//因为主键是自动生成不需要加所以是addByNoKey 返回的布尔告诉用户是否成功。 2.例如要修改师资队伍id=5的教师信息: 同样在构造Hyberbin的时候需要给出需要修改的数据放在szdw的POJO类去,还要给出szdw表的主键是id. 现有 Szdw szdw;里面有所有关于要插入这个表的教师的相关信息,包括这个老师的id是等于5的。 构造Hyberbin:Hyberbin hyberbin=new Hyberbin(szdw,"id"); 修改: boolean b = hyberbin.updata(); 返回的布尔告诉用户是否成功。 3.显示一个id=5的教师的信息 同样在构造Hyberbin的时候需要给出需要查询的数据将放在szdw的POJO类,szdw可以没有任何信息. 构造Hyberbin:Hyberbin hyberbin=new Hyberbin(new Szdw(),"id"); 查询: szdw=hyberbin.showOne(5+"");//默认id是字符串,如果是数字就加一个""空引号就行 szdw里面就存有所查询到的结果。 4.删除id=5的教师信息 同样在构造Hyberbin的时候需要给出需要删除的数据将放在szdw的POJO类,szdw可以没有任何信息. 构造Hyberbin:Hyberbin hyberbin=new Hyberbin(new Szdw(),"id"); 修改: boolean b = hyberbin.dell(5+""); 5.要显示所有教师信息 同样在构造Hyberbin的时候需要给出需要查询的数据在哪个表(szdw),szdw可以没有任何信息. 构造Hyberbin:Hyberbin hyberbin=new Hyberbin(new Szdw(),"id"); 查询:LinkedList<Object> list = hyberbin.showAll(); 查询结果放在一个链表了 用的时候用强制类型转换 把Object转换为Szdw就行了。 以在的操作是不是有局限性?删除非要按ID删除?查询的结果不能筛选? 作者已经考虑到这个,下面介绍使用附件。 public void setHql(String Hql) { this.Hql = Hql; } 只要你调用了 setHql(String Hql)的方法,那么它会按照你的hql语句执行查询或者删除修改等操作。 public void setOrder(String order) { this.order = order; } 只要你调用 setOrder(String order) 的方法,查询的结果将按照你给的排序方法排序。 ————————————————————————————————呵呵,一切就这么简单,just do it! hyberbin 2011.10.25 14:12
存取对象变量库结构作为一个功能较完备的Windows软件开发平台,Visual Basic专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(Data Access Object Variable),直接调用ODBC 2.0 API接口函数等三种访问数据库的方法。对其标准内置的Ms Access数据库,它可以提供不弱于专业数据库软件的支持,可以进行完整的数据库维护、操作及其事务处理。在VB,将非Access数据库称为外来数据库。对于FoxPro、dBASE、Paradox等外来数据库。虽然借助VB的Data Manager 能够对这些数据库进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态并不能从底层真正实现这些功能。本文从使用数据库存取对象变量的方法出发,实现了非Access格式数据库(以FoxPro数据库为例)的建新库、拷贝数据库结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据库支持不足的可行性 。 一 、 VB数据库的体系结构具体的VB的数据库结构。 VB数据库的核心结构是所谓的MicroSoft JET数据库引擎,JET引擎的作用就像是一块"面 板",在其上可以插入多种ISAM(Indexed Sequential Access Method,即索引顺序存取方 法) 数据驱动程序。JET引擎为Access格式数据库提供了直接的内部(build-in)支持,这就是VB对Access数据库具有丰富支持的真正原因。 VB专业版提供了FoxPro、dBASE(或 Xbase)、Paradox、Btrieve等数据库的ISAM驱动程序,这就使得VB能支持这些数据库格 式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据库格式(提是只需获得这些数据库的ISAM驱动接口程序)。 由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。实际上,在VB从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。 从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及Ms Access数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据库格式及类型是相互独立的。即对FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非Access数据库的访问提供了最重要的方法。   二 、使用非Access数据库时的参数设置及配置文件的参数读取如果在VB的程序使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在INI文件可以对不同类型的数据库进行设置。如果找不到这个INI文件, 将会导致不能访问数据库。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,VB的程序会在Windows子目录去找和应用程序同名的INI文件。可以使用VB的SetDataAccessOptions语句来设置INI文件。 SetDataAccessOptions语句的用法如下:SetDataAccessOptions 1 ,IniFileName其IniFileName参数指明的是INI文件的带路径的文件名。得注意的是,当应用程序找不到这个INI文件时,或在调用 OpenDataBase函数时对其Connect参数没有设定为VB规定的标准,如对FoxPro 2.5格式设定为了" FoxPro;"(应为" FoxPro 2.5; "),或者没有安装相应的ISAM驱动程序,则此时VB会显示一条错误信息" Not Found Installable ISAM "。通常,INI文件在应用程序分发出去以已经生成,或者在安装时动态生成,也可以在应用程序自己生成。 通常这种 INI文件有" [Options]"、"[ISAM]"、" [Installed ISAMs]"、"[FoxPro ISAM]"、"[dBASE ISAM] " 、" [Paradox ISAM] "等设置段,对于一个完整的应用程序则还应有一个属于应用 程序自己的设置段如" [MyDB]”。可在其设置DataType、Server、DataBase、 OpenOnStartup、DisplaySQL、QueryTimeOut等较为重要的数据库参数,并以此限定应用程序一般的运行环境。 Windows API接口函数在Kernel.exe动态链接库提供了一个OSWritePrivateProfileString函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。 在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。 设此应用程序的配置文件为MyDB.INI,则具体过程如下:Funtion GetINIString$( Byval Fname$ ,Byval szItem$ ,Byval szDeFault$ ) ' 此自定义子函数实现INI 文件内设置段内参数的读取Dim Tmp As String,x As Integer Tmp = String( 2048,32 ) x = OSGetPrivateProfileString(Fname$,szItem$ , szDefault$,Tmp,Len(Tmp) ," MyDB.INI " ) GetINIString = Mid$( Tmp,1,x ) EndFunction以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内Declare Function OSGetPrivateProfileString% Lib "Kernel" Alias "GetPrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$) Declare Function OSWritePrivateProfileString% Lib "Kernel" Alias "WritePrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$) Declare Function OSGetWindowsDirectory% Lib "Kernel" Alias "GetWindowsDirectory" (ByVal a$, ByVal b%) Sub Form1_Load( ) Dim st As String Dim x As Integer Dim tmp As String tmp = String$( 255, 32 ) ' INI文件内为各种数据库格式指明已安装的相应ISAM驱动程序x = OSWritePrivateProfileString(" Installable ISAMS", "Paradox 3.X", "PDX110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE III", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE IV", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.0", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.5", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "Btrieve", "BTRV110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "dBase ISAM", "Deleted", "On", "MyDB.INI" ) ' 指明 INI文件的位置x = OSGetWindowsDirectory( tmp, 255 ) st = Mid$( tmp, 1, x ) SetDataAccessOption 1, st + "\mydb.ini" '获得INI文件一些参数 gwMaxGridRows = Val(GetINIString( " MyDB.INI " ,"MaxRows", "250" )) glQueryTimeout = Val(GetINIString( " MyDB.INI " ,"QueryTimeout", "5" )) glLoginTimeout = Val(GetINIString( " MyDB.INI " ,"LoginTimeout", "20" )) End Sub   三 、数据存取对象变量对外来数据库编程的方法及其实例在VB专业版数据库编程的三种方法,第二种-使用数据库存取对象变量(DAO)的方法最具有功能强大、灵活的特点。 它能够在程序存取ODBC 2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot 及Table记录集合对象;可以存储过程和查询动作;可以存取数据库集合对象,例如 TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对数据库处理的大多数情况都非常适用。 由于VB记录集对象与所使用的数据库格式及类型是相互独立的,所以在非Access数据库也可以使用数据库存取对象变量的方法。因而 对FoxPro等外来数据库而言,使用数据库存取对象变量的方法同样也是一种最佳的选择。 有一点需要注意的是,VB的标准版仅能使用数据控件(Data Control)对数据库记录进行访问,主要的数据库存取对象也仅有Database、Dynaset对象可通过数据控件的属 性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的标准版生成,所以使用数据存取对象变量的方法只能用VB 3.0以上的专业版。 (一)、非Access数据库的新建及库结构的修改VB专业版数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其表示数据库结构时可以使用下面的对象: DataBase、TableDef、Field、Index,以及三个集合 (Collection): TableDefs、Fields和Indexes 。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。对于非Access数据库,大部分都是对应于一个目 录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据库。而每一个Access数据库文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。 下面是新建一个FoxPro 2.5格式数据库的程序实例。 Sub CreateNew ( ) Dim Db1 As database , Td As TableDefs Dim T1 As New Tabledef , F1 As New Field , F2 As New Field , F3 As New Field Dim Ix1 As New Index Dim Path As String Const DB_TEXT = 10 , DB_INTEGER = 3 ChDir "\" Path$ = InputBox( " 请输入新路径名: ", "输入对话框" ) MkDir Path$ ' 新建一个子目录Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;") Set Td = Db1.TableDefs T1.Name ="MyDB" '新建一个数据表,数据表名为MyDB F1.Name = "Name" , F1.Type = DB_TEXT , F1.Size = 20 F2.Name = "Class" , F2.Type = DB_TEXT , F2.Size = 20 F3.Name = "Grade" , F3.Type = DB_INTEGER T1.Fields.Append F1 '向数据添加这些字段T1.Fields.Append F2。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值