云昴(Mao Yun)

【数据库】实验四

| 【专业·学习】数据库

建立学生表

create table S(
SNO nchar(10),
SNAME nchar(20),
SSEX nchar(4),
SAGE int,
SADDR nchar(40),
PRIMARY KEY(SNO),
)

插入数据

INSERT INTO S VALUES(95001,'王明','男',24,'威海')
INSERT INTO S VALUES(95002,'王明2','男',24,'南海')
INSERT INTO S VALUES(95003,'王明3','女',14,'北海')
INSERT INTO S VALUES(95004,'王明4','男',34,'威海')
INSERT INTO S VALUES(95005,'王明5','男',25,'南海')
INSERT INTO S VALUES(95006,'王明6','男',24,'西海')

控件属性

控件类型 名称 属性
StaticText st_1 Text 结果显示列表
st_2 Text 输入家庭地址:
SingleLineEdit sle_1 Text
CommandButton cb_1 Text 查询
ListView lv_1

窗口界面

应用的open函数

SQLCA.DBMS = "ADO.Net"
SQLCA.LogPass = ""
SQLCA.LogId = ""
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.OleDb',Provider='SQLOLEDB',DataSource='',Database='hit'"
CONNECT USING SQLCA;//连接数据库
OPEN(main)

main窗口的按钮点击事件

lb_1.Reset();//清空列表
String addr,SNO,SNAME,SSEX;
int SAGE ;//定义主变量
addr= sle_1.text;//读取文本框中用户输入的地址

DECLARE S_ADDR CURSOR FOR
    SELECT SNO,SNAME,SSEX,SAGE
        FROM S
         WHERE SADDR=:addr;
//定义游标 S_ADDR
OPEN S_ADDR;//打开游标
FETCH S_ADDR INTO :SNO,:SNAME,:SSEX,:SAGE;
IF SQLCA.SQLCODE<>0 THEN
    lb_1.AddItem('Not Found'+addr);//如果不存在返回未找到
END IF
DO WHILE SQLCA.SQLCODE=0//逐行写入列表中
    lb_1.AddItem(SNO+SNAME+SSEX+string(SAGE)+addr);
    FETCH S_ADDR INTO :SNO,:SNAME,:SSEX,:SAGE;
LOOP
CLOSE S_ADDR;//关闭游标
云昴(Mao Yun)