
DBEDIT组件是一种数据感知控件,用它的好处是在设计期和运行期都可以自然的显示数据,但如果你把它们用来作为数据录入控件,那就不如用edit和combobox一类的数据编辑组件了这里DB是数据库的意思,你所说的"DB类型里面的A类型",我不懂,从来没有看到过这种说法关于数据库的说法有:
1、添加数据;2、修改数据;3、删除数据;4、插入数据;5、查询数据;这些 *** 作一般都需要数据集组件来完成。在DELPHI中常用的数据集组件在三种,ADO,BDE,还的IB,BDE已经被ADO所取代,IB是专门 *** 作因特贝思数据库的,因特贝思这玩意由于全是洋文,国内很少有人用它。还有很多第三方数据库控件。ADO现在来说是一种主流数据库 *** 作控件了。数据库一般来说,便携式(桌面)就用ACCESS,用这个数据库最大的好处就是不需要安装,在任何电脑任何时刻都可以运行数据库 *** 作软件,用D编的 *** 作它的软件,在U盘上都可以运行,但是它数据容量相对来说小一些。容量比较大的数据库就是SQL server了,达到了TB级,一般的企业来说够用了,现在种县市的合作医疗管理系统都是用它来做的。
DELPHI的数据库 *** 作软件,一般来说,由数据库、ADO数据库 *** 作组件、data ACCESS(负责连接数据库 *** 作控件与数据显示组件的控件)、data controls(数据显示控件)构成,四者缺一不可。ado组件通过发送SQL命令来存取、修改、删除数据库中的数据,然后通过data ACCESS控件来返回数据到由data controls控件构成的数据显示界面。
SQL命令又是独立于编程语言而存在的,也就是任何编程语言都可以使用这些命令,来进行数据库 *** 作。SQL命令不多,全部算起来百十来条而已,但用它来 *** 作数据库几乎达到了出神入画的地步。
看你提的问题,目前你的DELPHI编程水平还是入门级,你应该从最基础的知识做起,如果你想做一名数据库管理的程序员,你就应该先熟悉一下上述构成数据库 *** 作软件的四个部件。这些网上都有。
可用TADOQuery控件,把它和数据库建立连接,当然还要一个TDataSource指向那个TADOQueryDelphi中的SQL语句类似:adoquery1sqlclear;之后可在ADOQuery1中加代码实现更新。adoquery1sqladd("Update yourtable set 姓名="+quotedstr(edit1text));adoquery1close;adoquery1sqladd("where 年纪="+quotedstr(edit2text));adoquery1execsql;这算是一个小实例
应该再添加一个edit3用来输第二次密码的,先判断是否为空
注册的:
if(trim(edit1text)<>'')and(trim(edit2text)<>'')and(trim(edit3text)<>'')then
begin
if(edit2text=edit3text)then
begin
adoquery1sqlclose;
adoquery1sqladd('select
count()
from
denglu
where
yh='''
+
edit1text
+
'''');
adoquery1open;
if(adoquery1recordcount=0)then
begin
adoquery1sqlclose;
adoquery1sqladd('insert
into
denglu
values('''
+
edit1text
+
''','''
+
edit2text
+
'''');
adoquery1execsql;
end
else
begin
showmessage('改用户已存在,请重新输入用户名!');
edit1text:='';
edit2text:='';
edit3text:='';
end;
end
else
begin
showmessage('两次输入的密码不一致,请重新输入!');
edit2text:='';
edit3text:='';
end;
end
改密码:
if(trim(edit2text)<>'')and(trim(edit3text)<>'')then
begin
if(edit2text=edit3text)then
begin
adoquery1sqlclose;
adoquery1sqladd('select
count()
from
denglu
where
yh='''
+
用户名
+
'''');
adoquery1open;
if(adoquery1recordcount<>0)then
begin
adoquery1sqlclose;
adoquery1sqladd('update
denglu
set
mm='''
+
edit1text
+
'''
where
yh='''
+
用户名
+
'''');
adoquery1execsql;
end
else
begin
showmessage('该用户不存在,请重新输入用户名!');
edit1text:='';
edit2text:='';
edit3text:='';
end;
end
else
begin
showmessage('两次输入的密码不一致,请重新输入!');
edit2text:='';
edit3text:='';
end;
end;
与DELPHI无关。数据库的表设计有一条重要规则,凡是可以通过表中数据运算可以得出的结果,都不要在表中另设字段。比如单价乘以数量等于金额,那么,金额这个字段就不就该在表中出现。由此可知,在SQL语句中,是可以进行数据运算的;比如表中如果已经有了出生日期这个字段,我们就不在需要年龄这段字段,但是用户在浏览查询的数据的时候,又需要看到年龄,因为谁也不愿意去根据出生年月来搬手指计算年龄。因此我们必须在显示数据的栅格表中添加一列,显示年龄,这个年龄就要在SQL语句中计算了。先在本代码段的BEGIN前面定义一个变量DQRQ:string;然后再代码段中给它赋值:dqrq:=dateTostr(date);
这样我们就可以写如下SQL语句:
'select
zyid
as
住院号,xm
as
姓名,ryrq
as
入院日期,(#'+dqrq+'#
-
csny)/365
as
年龄,'+
'jgys
as
经管医生,cyrq
as
出院日期,zyfy
as
住院费用,'+
'fycdz
as
费用承担者,jcrq
as
交出日期,scr
as
收取人,'+
'gdrq
as
归档日期,gdr
as
归档人
from
bagdb
'+
'where
jcrq
is
null
and
scr
is
null
and
cyrq
is
not
null
and
ryhs
is
not
null
'+
'ORDER
BY
cyrq
asc';
请注意“(#'+dqrq+'#
-
csny)/365
as
年龄”的写法。
这是ACCESS的写法,SQL
server
2000的写法有些不同。
SQL
server
2000的日期值是不需要#的,它的写法如:
TB_BR_JBRYRQ
BETWEEN
'''+edit15Text+'''
AND
'''+edit16Text+'''
';RYRQ(入院日期)在表中是日期型字段。
因数据类型致所当保存进去了我想了样办法看能能帮
(1)首先我用adoquery1连接数据库表假定字段表第二列
(2)
样写保证之前adoquery1开着
adoquery1edit;
adoquery1Fields[1]AsDateTime:=strtodate(datetostr(TimerDate));
adoquery1Post;
解释:strtodate(datetostr(TimerDate));
格式了把时间格式转真正date只有日期格式Datetimepicker控件本身所带来麻烦用太意
对于SqlServer 数据库,可以如下 *** 作。
在窗体上放一个TDateTimePicker控件,用于日期选择,
然后直接用 Insert into语句就可以
var SaveSql:String;
SaveSql:='Insert into kc_rkdmx(单号,入库日期,制单人) values('
+''''+LEdit_dhText+''''+','
+''''+DateToStr(TDateTimePickerDate)+''''+','//日期数据
+''''+UserName+''''+')';
ADOQ_SaveClose;
ADOQ_SaveSQLClear;
ADOQ_SaveSQLAdd(SaveSql);
ADOQ_SaveExecSQL;
以上就是关于跪求Delphi sql 查询、修改等语句(Tquery)【请仔细看补充】全部的内容,包括:跪求Delphi sql 查询、修改等语句(Tquery)【请仔细看补充】、DELPHI中怎样用SQL语句更新数据库中数据要注意什么有例子的话高分。。。、delphi向数据库中添加语句是否正确等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)