我正在使用asp经典。 我试图从用户那里获取信息,然后插入我的数据库。
错误是“没有给定值”。 在线:myCon.Execute(sql);
我认为它来自我的sql语句。
var myCon, myRec, sql;
myCon = new ActiveXObject ("ADODB.Connection");
myCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Users\\abc.mdb");
var bodyType = parseInt(Request.Form("cbBodyType"));
var education = parseInt(Request.Form("cbEducation"));
var eyes = parseInt(Request.Form("cbEyes"));
var hairs = parseInt(Request.Form("cbHairs"));
var heights = parseInt(Request.Form("cbHeights"));
var religion = parseInt(Request.Form("cbReligion"));
var memberID = parseInt(Session("MemberID"));
sql = "INSERT INTO Profiles (MemberID, Religion, HairColor, Eye, Education, Height, BodyType) VALUES ("+memberID+", "+religion+", "+hairs+", "+eyes+", "+education+", "+heights+", "+education+")";
myCon.Execute(sql);
myCon.Close();
编辑:问题在于逻辑。我有例如具有ID和描述的表HairColor。 ID是主键,其外键位于表Profile中。 当我的用户输入信息时,我想恢复组合框值,获取ID,然后执行INSERT INTO PROFILES。
有没有一种简单的方法可以做到而不是使用很多“where statement”?
答案 0 :(得分:0)
我的猜测是发生以下情况之一:
您尝试填充的其中一列可能是字符串值列。在这种情况下,您需要用单引号括住您的value参数,如下面的简化示例:
sql = "INSERT INTO Profiles (MemberID, Religion) VALUES (" _
+ memberID + ",'" + religion + "');"
或者,如果您的某个组合框中有- All -
或Please Select
选项作为top和default选项,并且您没有为该选项指定值,那么可能会返回一个空白/空字符串作为值。这将导致这一结果(简化为了简化)SQL:
Sql = "INSERT INTO Profiles (MemberID, Religion) VALUES( 235, );"
请注意第二列没有值。我本来希望你得到一个语法错误信息,但是,如果那是发生了什么。
请注意,通过这种方式执行SQL,从发布的值组装字符串而不是使用SQL参数,您将为SQL注入攻击打开大门。这不是一个好主意。< / p>
答案 1 :(得分:0)
尝试使用以下代码变体
myCon.Execute sql, 0
(不带括号)