java 整型
我在mysql数据库里建了个表tb_article,有7栏,分别是TypeId,title,content,sdtime,create,info,count,出了typeid是整形,其他都是char型,我用语句
String sql="insert into tb_article values (
'-1','java.','java1,'2011年05月13日 18:45:27','原创','java2',0)";
db.executeUpdate(sql);
显示typeid的值不合法,我改成正数或0就可以了,为什么负值不能赋给typeid?
}
}
补充:Out of range value for column 'TypeId' at row 1
这是出错信息
追问:改了也没用啊,而且如果是引号的原因,那改成整数也不该有用
答案:可能是数据库中表中typeid的类型问题,你改为number行,再试一试。
2楼说的也很有道理,我编程的时候,都没有这么写SQL,最好这样写insert into tb_article values(?,?,?....);// 有几个参数就有几个?;然后用PreparedStatement类得setInt(1,"value1");setString(2,"value2")...这样对很多数据就很好操作。
其他:你的SQL应该这么写
String sql="insert into tb_article values (
-1,'java.','java1,'2011年05月13日 18:45:27','原创','java2',0)";
把-1前后的单引号去了,就代表是数值了
加上引号代表是字符串,所以出错了 给你简单说一下char和varchar的区别,当给char赋值时,所添加的值小于你指定的长度,那么数据库会自动补齐剩余的长度,比如你设置的长度是10,而你赋值的长度只有5,那么剩下的5个数据库会自动填上空格来补齐;varchar就不一样了,你填什么值就是什么值,数据库不会补齐差值。你看看是不是这个原因造成的。
把char换成varchar 关注。 楼上的你问题太多了,通不过编译。你想要的功能很简单,用不了那么复杂啊。
错误我就不给你指出了。
我给你写了一个,满足你的要求,而且考虑了健壮性
import java.io.*;
import java.util.Scanner;
public class zeng {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
String numbers;
System.out.println("请任意输入数字,以整型输出\t\n");
while (true) {
numbers = scanner.nextLine();
try {
long i=Integer.parseInt(numbers);
System.out.println(numbers);
} catch (NumberFormatException e) {
// TODO 自动生成 catch 块
System.out.println("你输入的不是一个整数,无法转换!");
}
}
}
}
上一个:做java干什么的
下一个:Java问题,紧急!看图~