Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从NetBeans插入Access数据库_Java_Ms Access_Jdbc_Netbeans_Ucanaccess - Fatal编程技术网

Java 从NetBeans插入Access数据库

Java 从NetBeans插入Access数据库,java,ms-access,jdbc,netbeans,ucanaccess,Java,Ms Access,Jdbc,Netbeans,Ucanaccess,我用JavaNetBeans创建了一个基于GUI的酒店管理系统,该系统与Ms Access数据库连接。在数据库中,我有一个名为“RoomInfo”的表 当我尝试执行下面的查询时,会出现两种错误 String sql = "INSERT INTO RoomInfo(RoomNumber,Reserved,RoomCategory,AirConditioned, BedType, RentPerDay)VALUES("+objr.roomno+","+objr.reserved+","+ob

我用JavaNetBeans创建了一个基于GUI的酒店管理系统,该系统与Ms Access数据库连接。在数据库中,我有一个名为“RoomInfo”的表

当我尝试执行下面的查询时,会出现两种错误

String sql = "INSERT INTO RoomInfo(RoomNumber,Reserved,RoomCategory,AirConditioned,
    BedType, RentPerDay)VALUES("+objr.roomno+","+objr.reserved+","+objr.category+","
   +objr.AirConditioned+","+objr.bedtype+","+objr.rent+")";
第一个错误是
net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.7意外标记:,
当我将所有Jtextfields留空并尝试将新记录插入数据库时,会出现此错误

第二个错误是
net.ucanaccess.jdbc.UcanaccessSQLException:UCAExc:::3.0.7用户缺乏权限或找不到对象:Economy
(Economy是房间类别的条目)当我在Jtextfields中输入数据并尝试将其保存到数据库中时,出现此错误


需要识别问题的帮助。

而不是将变量名直接传递到sql字符串中,然后使用ps.setString()再次设置它们;只需在sql字符串中使用占位符。 我的意思是

String sql = "INSERT INTO RoomInfo (RoomNumber, Reserved, RoomCategory, AirConditioned, BedType, RentPerDay) 
VALUES (?, ?, ?, ?,?)";
        ps = con.prepareStatement(sql);

        ps.setString(1, objr.roomno);
        ps.setString(2, objr.reserved);
        ps.setString(3, objr.category);
        ps.setString(4, objr.AirConditioned);
        ps.setString(5, objr.bedtype);
        ps.setString(6, objr.rent);

而不是将变量名直接传递到sql字符串中,然后使用ps.setString()再次设置它们;只需在sql字符串中使用占位符。 我的意思是

String sql = "INSERT INTO RoomInfo (RoomNumber, Reserved, RoomCategory, AirConditioned, BedType, RentPerDay) 
VALUES (?, ?, ?, ?,?)";
        ps = con.prepareStatement(sql);

        ps.setString(1, objr.roomno);
        ps.setString(2, objr.reserved);
        ps.setString(3, objr.category);
        ps.setString(4, objr.AirConditioned);
        ps.setString(5, objr.bedtype);
        ps.setString(6, objr.rent);

两个问题:(1)应该在SQL命令文本中使用问号(
)作为参数占位符,例如,
。。。值(?,,,,,,,,?)
。(2) 在尝试插入行之后而不是之前,您正在执行“所有字段都不能为空”检查。有两个问题:(1)您应该在SQL命令文本中使用问号(
)作为参数占位符,例如,
。。。值(?,,,,,,,,?)
。(2) 在尝试插入行之后,而不是之前,您正在执行“所有字段都不能为空”检查。感谢您的回复。所以我的INSERT查询的语法是错误的?看起来是这样的。谢谢您的回复。所以我的INSERT查询的语法是错误的?看起来是这样的。