JDBC操作后台数据库问题

GoldenLeeK 2018-06-09 06:00:52
public int addTeacher(TeacherInfoBean teacherinfo){
String sqlstr = "insert into teacherinfo values(?,?,?,?,?,?,?,?,?,?)";
int result = 0;

DbConnection dbConnection = new DbConnection();
Connection con = dbConnection.getconnection(); // 和数据库建立连接
PreparedStatement ps = null;

try {
ps = con.prepareStatement(sqlstr);
ps.setString(1, teacherinfo.getTeacherId());
ps.setString(2, teacherinfo.getTeacherName());
ps.setString(3, teacherinfo.getTeacherBirthday());
ps.setString(4, teacherinfo.getTeacherSex());
ps.setString(5, teacherinfo.getTeacherSchool());
ps.setString(6, teacherinfo.getTeacherTech());
ps.setString(7, teacherinfo.getTeacherAddress());
ps.setString(8, teacherinfo.getTeacherInDate());
ps.setString(9, teacherinfo.getTeacherDepartment());
ps.setString(10, teacherinfo.getTeacherDuty());
result = ps.executeUpdate(sqlstr);




} catch (SQLException ex) {
System.out.println("增加教员信息时出错");
} finally { //关闭数据库连接对象
try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (SQLException ex) {
//do nothing
}
}
return result;
}//end addTeacher()

这样执行这个语句,插入不了,有没有大神帮忙看看
...全文
1172 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuailhw123 2018-06-20
  • 打赏
  • 举报
回复
https://blog.csdn.net/u010452388/article/details/80184096
夏讨厌 2018-06-11
  • 打赏
  • 举报
回复
引用 12 楼 qq_20379177 的回复:
ResultSet 没声明吗 int result=0 ? result=ps.executeUpdate(sqlstr)?? private PreparedStatement ps=null; private ResultSet rs=null; ps = conn.prepareStatement(sql); rs = ps.executeQuery();
你添加数据不用rs取结果集.. result=ps.executeUpdate(sqlstr)??那行是多余的 . 如果要rs记得close
GoldenLeeK 2018-06-11
  • 打赏
  • 举报
回复
引用 11 楼 u010452388 的回复:
引用 10 楼 GoldenLeeK 的回复:
[quote=引用 6 楼 u010452388 的回复:] 你把你整个项目的文件都发出来看下
这个就是我写的一个教师信息操作类中的一个方法,可能是我插入的数据跟数据库设定的数据有些出入,导致语法错误,我再修改一下看看可不可以~ 谢谢
好的,有问题沟通,数据库操作都是固定的,你可以用C3P0的连接池,底层都封装好了,比较好用[/quote]系统还是提示You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?,?,?,?,?,?,?,?,?)' at line 1,说这行代码语法错误,可是我感觉没错误
GoldenLeeK 2018-06-11
  • 打赏
  • 举报
回复
引用 13 楼 qq_20379177 的回复:
[quote=引用 12 楼 qq_20379177 的回复:] ResultSet 没声明吗 int result=0 ? result=ps.executeUpdate(sqlstr)?? private PreparedStatement ps=null; private ResultSet rs=null; ps = conn.prepareStatement(sql); rs = ps.executeQuery();
你添加数据不用rs取结果集.. result=ps.executeUpdate(sqlstr)??那行是多余的 . 如果要rs记得close[/quote]可是我需要用它返回的数来判断我是否操作成功
GoldenLeeK 2018-06-11
  • 打赏
  • 举报
回复
引用 13 楼 qq_20379177 的回复:
[quote=引用 12 楼 qq_20379177 的回复:] ResultSet 没声明吗 int result=0 ? result=ps.executeUpdate(sqlstr)?? private PreparedStatement ps=null; private ResultSet rs=null; ps = conn.prepareStatement(sql); rs = ps.executeQuery();
你添加数据不用rs取结果集.. result=ps.executeUpdate(sqlstr)??那行是多余的 . 如果要rs记得close[/quote]可是我需要用它返回的数来判断我是否操作成功
GoldenLeeK 2018-06-11
  • 打赏
  • 举报
回复
引用 18 楼 yjsl__ 的回复:
数据库表结构看一下 在这里打断点result = ps.executeUpdate(sqlstr);看看完整的SQL,然后复制到MySQL中执行看看具体错在哪
嗯嗯,已经找出错误了,原来是ps.executeUpdate(sqlstr)这个语句错误了,正确的是ps.executeUpdate()这个语句。谢谢拉
GoldenLeeK 2018-06-11
  • 打赏
  • 举报
回复
引用 17 楼 qq_20379177 的回复:
[quote=引用 15 楼 GoldenLeeK 的回复:] [quote=引用 13 楼 qq_20379177 的回复:] [quote=引用 12 楼 qq_20379177 的回复:] ResultSet 没声明吗 int result=0 ? result=ps.executeUpdate(sqlstr)?? private PreparedStatement ps=null; private ResultSet rs=null; ps = conn.prepareStatement(sql); rs = ps.executeQuery();
你添加数据不用rs取结果集.. result=ps.executeUpdate(sqlstr)??那行是多余的 . 如果要rs记得close[/quote]可是我需要用它返回的数来判断我是否操作成功[/quote] 要判断返回是否成功你可以用ResultSet返回一个boolean 的结果 方法的返回值就改成boolean或者ResultSet 用boolean接收 也可以参照这个,打印一句话表示成功,因为出错了是执行不到System.out的 public void updatePath(FilePath fp) { try { conn=su.openDb(); String sql="update Filepath set name=?,path=?,parentID=? where id=?;"; ps = conn.prepareStatement(sql); ps.setString(1,fp.getName()); ps.setString(2, fp.getPath()); ps.setInt(3, fp.getParentId()); ps.setInt(4, fp.getId()); ps.executeUpdate(); System.out.println("更新成功"); }catch(Exception e) { e.printStackTrace(); System.out.println("更新失败"); }finally { su.close(ps, conn); } }[/quote]嗯嗯,谢啦。问题就是那个ps.executeUpdate(sqlstr)这个语句是不正确的。正确的应该是ps.executeUpdate(); 我差点被自己蠢哭了
自然80 2018-06-11
  • 打赏
  • 举报
回复
commit
yjsl__ 2018-06-11
  • 打赏
  • 举报
回复
数据库表结构看一下 在这里打断点result = ps.executeUpdate(sqlstr);看看完整的SQL,然后复制到MySQL中执行看看具体错在哪
夏讨厌 2018-06-11
  • 打赏
  • 举报
回复
引用 15 楼 GoldenLeeK 的回复:
[quote=引用 13 楼 qq_20379177 的回复:] [quote=引用 12 楼 qq_20379177 的回复:] ResultSet 没声明吗 int result=0 ? result=ps.executeUpdate(sqlstr)?? private PreparedStatement ps=null; private ResultSet rs=null; ps = conn.prepareStatement(sql); rs = ps.executeQuery();
你添加数据不用rs取结果集.. result=ps.executeUpdate(sqlstr)??那行是多余的 . 如果要rs记得close[/quote]可是我需要用它返回的数来判断我是否操作成功[/quote] 要判断返回是否成功你可以用ResultSet返回一个boolean 的结果 方法的返回值就改成boolean或者ResultSet 用boolean接收 也可以参照这个,打印一句话表示成功,因为出错了是执行不到System.out的 public void updatePath(FilePath fp) { try { conn=su.openDb(); String sql="update Filepath set name=?,path=?,parentID=? where id=?;"; ps = conn.prepareStatement(sql); ps.setString(1,fp.getName()); ps.setString(2, fp.getPath()); ps.setInt(3, fp.getParentId()); ps.setInt(4, fp.getId()); ps.executeUpdate(); System.out.println("更新成功"); }catch(Exception e) { e.printStackTrace(); System.out.println("更新失败"); }finally { su.close(ps, conn); } }
GoldenLeeK 2018-06-10
  • 打赏
  • 举报
回复
引用 6 楼 u010452388 的回复:
你把你整个项目的文件都发出来看下
这个就是我写的一个教师信息操作类中的一个方法,可能是我插入的数据跟数据库设定的数据有些出入,导致语法错误,我再修改一下看看可不可以~ 谢谢
GoldenLeeK 2018-06-10
  • 打赏
  • 举报
回复
引用 8 楼 qq_16272049 的回复:
报错是什么啊
好像说我SQL语法用错了
夏讨厌 2018-06-10
  • 打赏
  • 举报
回复
ResultSet 没声明吗 int result=0 ? result=ps.executeUpdate(sqlstr)?? private PreparedStatement ps=null; private ResultSet rs=null; ps = conn.prepareStatement(sql); rs = ps.executeQuery();
Legendary灬 2018-06-10
  • 打赏
  • 举报
回复
报错是什么啊
阿顾同学 2018-06-10
  • 打赏
  • 举报
回复
或者你可以看看我这个文章,可以自己写一些工具类,插入数据库比较方便,但是要理解其原理 https://blog.csdn.net/u010452388/article/details/80184096
阿顾同学 2018-06-10
  • 打赏
  • 举报
回复
你把你整个项目的文件都发出来看下
阿顾同学 2018-06-10
  • 打赏
  • 举报
回复
引用 10 楼 GoldenLeeK 的回复:
引用 6 楼 u010452388 的回复:
你把你整个项目的文件都发出来看下
这个就是我写的一个教师信息操作类中的一个方法,可能是我插入的数据跟数据库设定的数据有些出入,导致语法错误,我再修改一下看看可不可以~ 谢谢
好的,有问题沟通,数据库操作都是固定的,你可以用C3P0的连接池,底层都封装好了,比较好用
GoldenLeeK 2018-06-09
  • 打赏
  • 举报
回复
引用 4 楼 haimianwufeng 的回复:
TeacherInfoBean类中属性都是String吗
对啊 ,全是String的
haimianwufeng 2018-06-09
  • 打赏
  • 举报
回复
TeacherInfoBean类中属性都是String吗
GoldenLeeK 2018-06-09
  • 打赏
  • 举报
回复
引用 1 楼 sinat_37729323 的回复:
插入的SQL能这样写 insert into teacherinfo values(?,?,?,?,?,?,?,?,?,?) ???
就是我想往后台数据库插入变量, 前几个用户类我都可以插进去,但是不知道为什么这个teacherinfo类 信息多了几个,插入就异常了
加载更多回复(2)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧