public Integer addStudent(Student stu) throws SQLException {
// TODO Auto-generated method stub
String sql = "insert into student(stuNo,stuName,stuAge,stuGender,"
+ "stuBirth,stuAddress) values(?,?,?,?,?,?)";
Object[] params = { stu.getStuNo(), stu.getStuName(), stu.getStuAge(),
stu.getStuGender(), stu.getStuBirth(), stu.getStuAddress() };
if (insertObj(sql, params) != null) {
return new Integer(1);
}
return null;
}public static Integer insertObj(String sql, Object[] params){
Connection conn = JDBCUtils.getConnection();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ParameterMetaData pm = ps.getParameterMetaData();
for(int i=1;i<=pm.getParameterCount();i++){
System.out.println(params[i-1]);
ps.setObject(i, params[i-1]);
}
Integer rtn = ps.executeUpdate();
JDBCUtils.free(null, ps, conn);
return rtn;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
我用addStudent调用insertObj时出现如下异常:
com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'WHERE' 附近有语法错误。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerParameterMetaData.<init>(SQLServerParameterMetaData.java:426)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getParameterMetaData(SQLServerPreparedStatement.java:1510)
at hy.j2ee.jdbc.BaseDAO.insertObj(BaseDAO.java:96)
at hy.j2ee.jdbc.StudentOperationSqlServerImpl.addStudent(StudentOperationSqlServerImpl.java:20)
at hy.j2ee.jdbc.StudentDAOTest_SqlServer.main(StudentDAOTest_SqlServer.java:35)
// TODO Auto-generated method stub
String sql = "insert into student(stuNo,stuName,stuAge,stuGender,"
+ "stuBirth,stuAddress) values(?,?,?,?,?,?)";
Object[] params = { stu.getStuNo(), stu.getStuName(), stu.getStuAge(),
stu.getStuGender(), stu.getStuBirth(), stu.getStuAddress() };
if (insertObj(sql, params) != null) {
return new Integer(1);
}
return null;
}public static Integer insertObj(String sql, Object[] params){
Connection conn = JDBCUtils.getConnection();
try {
PreparedStatement ps = conn.prepareStatement(sql);
ParameterMetaData pm = ps.getParameterMetaData();
for(int i=1;i<=pm.getParameterCount();i++){
System.out.println(params[i-1]);
ps.setObject(i, params[i-1]);
}
Integer rtn = ps.executeUpdate();
JDBCUtils.free(null, ps, conn);
return rtn;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
我用addStudent调用insertObj时出现如下异常:
com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException: 关键字 'WHERE' 附近有语法错误。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerParameterMetaData.<init>(SQLServerParameterMetaData.java:426)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getParameterMetaData(SQLServerPreparedStatement.java:1510)
at hy.j2ee.jdbc.BaseDAO.insertObj(BaseDAO.java:96)
at hy.j2ee.jdbc.StudentOperationSqlServerImpl.addStudent(StudentOperationSqlServerImpl.java:20)
at hy.j2ee.jdbc.StudentDAOTest_SqlServer.main(StudentDAOTest_SqlServer.java:35)
解决方案 »
- 本人 打算去北京的传智博客培训,想在去之前连接下那的情况
- 搞了半天也不懂!! 求高手指点!!
- JDK帮助文当中为什么没有dt.jar等jre环境中必需的类库的API说明
- glassfish启动后的控制台是否有像tomcat那样的dos窗口?
- 准备用ajax开发聊天室,大家帮忙想想有什么好的建议,兼顾正确性和性能
- 求助:关于EJB开发工具
- 安装Websphere4.0后,在系统的 服务当中没有找到IBM WS AdminServer 4.0服务!命令行下运行adminservice提示错误,代码为1063 重装N遍了
- jbuilder8利用oracle创建CMP问题?
- WebSphere Studio Application Developer 移植指南(转贴1)
- hibernate的一个很不好的问题,让我困惑了
- 发现nutch一个问题,不知道是不是BUG,谁有解决方法?NutchBean.getSummary
- 为什么使用proguard对一个jar包进行混淆,类中的变量没有混淆呢?
insertObj()方法里 stu.getStuNo(), stu.getStuName(), stu.getStuAge(),
stu.getStuGender(), stu.getStuBirth(), stu.getStuAddress()中的stu找不到 肯定会报错 建议public static Integer insertObj(String sql, Object[] params Student stu){
String sql = "insert into student(stuNo,stuName,stuAge,stuGender,"
+ "stuBirth,stuAddress) values(?,?,?,?,?,?)";
Object[] params = { stu.getStuNo(), stu.getStuName(), stu.getStuAge(),
stu.getStuGender(), stu.getStuBirth(), stu.getStuAddress() };没看出来 哪里能冒出来个 where
估计是你params 值有问题
你把最后SQL语句粘贴到 SqlServer查询分析器中 试试
提示是这行有问题
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
估计是设置参数的问题 上面这种方法试试
public static Integer insertObj(String sql, Object[] params) {
Connection conn = DbManager.getMysqlCon();
try {
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 1; i <= params.length; i++) {
System.out.println(params[i - 1]);
ps.setObject(i, params[i - 1]);
}
ps.execute();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return 1; }
你试下这个吧 希望能帮助你
二:若第一步没问题。单步跟踪确认System.out.println(params[i-1])数据是否正常有问题
三:若仍然解决不了 尝试使用19的办法不检索长度和类型,