免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 狼神萧枫
打印 上一主题 下一主题

[求助]我快疯了,调试三天了,到底在哪错了呀? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-03-23 22:47 |只看该作者
我干脆把birthday字段删了!

当然也修改了相关代码,

运行结果还是一样!上面哪张图片。

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.sql.*" %>
<HTML>
<BODY bgcolor=pink ><Font size=5>
<% //获取提交的学号:int类型
    String number111=request.getParameter("number");
         
    //获取提交的姓名:
    String name111=request.getParameter("name");
     byte  a[]=name111.getBytes("ISO-8859-1");
     name111=new String(a);     
     //获取提交的性别:
    String sex111=request.getParameter("sex");
     byte  b[]=sex111.getBytes("ISO-8859-1");
     sex111=new String(b);     
   
     //获取提交的年龄 int类型
     String age111=request.getParameter("age");
         
     //获取提交的职务 等等

   
    out.println("完成获取");

    String driver="com.mysql.jdbc.Driver";
    String url="jdbc:mysql://localhost:3306/school";
    String userid="root";
    String passwd="chen";

    try{
       Class.forName(driver);
       }
    catch(Exception e){
        out.println("无法载入"+driver+"驱动程序!");
        e.printStackTrace();
    }
try {
        Connection con=DriverManager.getConnection(url,userid,passwd);
            if(!con.isClosed())
               out.println("成功连接数据库!");
        Statement sql=con.createStatement();

       String condition="INSERT INTO teacher VALUES

("+number111+",'"+name111+"','"+sex111+"',"+age111+");";
      
       sql.executeUpdate(condition); //执行添加操作
}
catch(SQLException SQLe){
        out.println("无法插入数据!");
    }                              
%>

     <P>添加新记录后的表:          //显示添加新记录后表中的记录:省略


</Font>
</BODY>
</HTML>

[ 本帖最后由 狼神萧枫 于 2006-3-23 22:50 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2006-03-23 22:52 |只看该作者
String condition="INSERT INTO teacher VALUES

("+number111+",'"+name111+"','"+sex111+"',"+age111+");";
   
   out.println(condition);//先打印出来瞧瞧
//       sql.executeUpdate(condition); //执行添加操作
}

还有个问题啊,你的表结构列出来看下
这么添加如果跟列对不上也是插不进去的
desc teacher
用PreparedStatement比较方便不爱出错

[ 本帖最后由 艾斯尼勒 于 2006-3-23 22:59 编辑 ]

论坛徽章:
0
13 [报告]
发表于 2006-03-23 22:57 |只看该作者
完成获取成功连接数据库! INSERT INTO teacher VALUES (111,'陈陈','女',22); 无法插入数据!
添加新记录后的表: //显示添加新记录后表中的记录:省略

谢谢艾斯尼勒!可还是有问题啊~~~~~~

[ 本帖最后由 狼神萧枫 于 2006-3-23 22:58 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2006-03-23 23:02 |只看该作者
原帖由 狼神萧枫 于 2006-3-23 22:57 发表
完成获取成功连接数据库! INSERT INTO teacher VALUES (111,'陈陈','女',22); 无法插入数据!
添加新记录后的表: //显示添加新记录后表中的记录:省略

谢谢艾斯尼勒!可还是有问题啊~~~~~~


INSERT INTO teacher VALUES (111,'陈陈','女',22);
你把你这句复制到数据库自带的标准客户端上试试,看什么问题。如果能插进去就说明你语句构造的没问题,否则会有错误提示

嗯。。。insert into teacher(number,name,sex,age) values(111,'xx','f',22)
这样试试,insert语句插入的时候最好在表明后面把字段列表写完整,我记得values和后面的括号之间应该不能有空格

[ 本帖最后由 艾斯尼勒 于 2006-3-23 23:07 编辑 ]

论坛徽章:
0
15 [报告]
发表于 2006-03-24 01:01 |只看该作者
原帖由 狼神萧枫 于 2006-3-23 23:33 发表
屏蔽了异常?

运行结果就是哪样呀~~

condition这条语句没问题吗?

插入日期型数据和插入字符有区别吗?请你给一条insert语句!谢谢谢谢~~~~~~


catch(SQLException SQLe){
        out.println("无法插入数据!";
    }  
                             

这样就叫做屏蔽异常,实际上SQLe(变量名应该小写)里包含了你这sql执行的错误信息;比如缺少逗号,那么stacktrace里会有提示sql语句哪个位置不符合sql语法,,,直接定位,2分钟解决问题

论坛徽章:
0
16 [报告]
发表于 2006-03-24 09:31 |只看该作者
MYSQL可以以?传参数,我都是以?来传参数的,是没有问题的,不过你要考虑到数据类型的匹配的问题

论坛徽章:
0
17 [报告]
发表于 2006-03-24 11:40 |只看该作者
String condition="INSERT INTO teacher VALUES

("+number111+",'"+name111+"','"+sex111+"',"+age111+");";
你把这句改为
String condition="INSERT INTO teacher VALUES

('"+number111+"','"+name111+"','"+sex111+"','"+age111+"');";
这样去试一下,因为你的number111和age111好象都试字符串,我觉得应该加上单引号

论坛徽章:
0
18 [报告]
发表于 2006-03-24 19:59 |只看该作者
原帖由 艾斯尼勒 于 2006-3-23 23:02 发表


INSERT INTO teacher VALUES (111,'陈陈','女',22);
你把你这句复制到数据库自带的标准客户端上试试,看什么问题。如果能插进去就说明你语句构造的没问题,否则会有错误提示

嗯。。。insert into teacher ...


嗯,谢谢你提供这个方法!
解决!问题是111已经存在,所以插不入!

论坛徽章:
0
19 [报告]
发表于 2006-03-24 20:00 |只看该作者
原帖由 kakasi 于 2006-3-24 01:01 发表


catch(SQLException SQLe){
        out.println("无法插入数据!");
    }  
                             

这样就叫做屏蔽异常,实际上SQLe(变量名应该小写)里包含了你 ...


请教:怎么把异常信息打出来呢?

论坛徽章:
0
20 [报告]
发表于 2006-03-24 20:40 |只看该作者
原帖由 狼神萧枫 于 2006-3-24 19:59 发表


嗯,谢谢你提供这个方法!
解决!问题是111已经存在,所以插不入!


....unique 或者 primary key 约束的问题

打印异常信息

catch(Exception e){
     System.out.println(e.getMessage());
//or
     e.printStackTrace();
}

[ 本帖最后由 艾斯尼勒 于 2006-3-24 20:41 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP