数据库是sql库,表(dlk)中有两个字段,ID为char型长度为50,passwd为char型长度为20.ID为主键(有一条记录是ID号admin,passwd为admin) 但总是出显这样的错误:project project1.exe raised exception class eoleexception with message '参数类型不正确,或不在可以接受的
范围之内,可与其他参数冲突。'process stopped ,use step or run to continue.
为了解决问题我又在dlk表是加了一条记录,我是这样加的:ID号是"111"passed为“111”,这次在i_user.Text中输入111,很顺利的能登录。
我想是我的表的问题就重建了一个表,记录如上同。但是效果和上面一样。
我又重建成了一个表,这次(ID为varchar,passed为varchar),记录如上。结果与上同。请问各位,这是怎么回事呀?
try
Database1.Connected:=True;
T_user.Filter:='ID='''+i_user.Text+'''';
T_user.Filtered:=True;
T_user.Open;
except
Application.MessageBox('请与系统管理员联系。', '数据库连接错误!', MB_OK);
Application.Terminate;
end;
if T_user.RecordCount=1 then
begin
if T_user['PASSWD']=i_passwd.Text then
begin
F_login.Hide;
F_main.show;
end
else
Application.MessageBox('请确认用户名是否正确!', '无此用户', MB_OK);
end
else
Application.MessageBox('请确认密码,注意大小写!', '密码不匹配', MB_OK);
end;
3 个解决方案
#1
你的问题是由于数据类型的原因,你应该看看数据类型的定义
char 的长度是固定的,你定义了50位,它就是50位,不够以空格补齐。
varchar 的长度是以你的数据长度为准,3位就是3位。
char 的长度是固定的,你定义了50位,它就是50位,不够以空格补齐。
varchar 的长度是以你的数据长度为准,3位就是3位。
#2
最好是定义成varchar,不要再定义成char,否则错误不断
#3
建议使用SQL查询实现,不要使用过滤的方式!
#1
你的问题是由于数据类型的原因,你应该看看数据类型的定义
char 的长度是固定的,你定义了50位,它就是50位,不够以空格补齐。
varchar 的长度是以你的数据长度为准,3位就是3位。
char 的长度是固定的,你定义了50位,它就是50位,不够以空格补齐。
varchar 的长度是以你的数据长度为准,3位就是3位。
#2
最好是定义成varchar,不要再定义成char,否则错误不断
#3
建议使用SQL查询实现,不要使用过滤的方式!