【发布时间】:2012-05-31 23:08:04
【问题描述】:
我在 PHP 中有以下 mysql 查询,它工作正常。
$strUpdate = "INSERT INTO `batchfolder`.`newbatch` (`BatchID` ,`Batch` ,`barcode` ,`PG`)VALUES (NULL , '', '1', '')";
当我直接在数据库中运行它时也很好。
但是当我在java中运行它时,
try {
conn = DriverManager.getConnection (url, userName, password);
Statement st = conn.createStatement();
st.execute("INSERT INTO `batchfolder`.`newbatch` (`BatchID` ,`Batch` ,`barcode` ,`PG`)VALUES (NULL , '', '1', '')");
st.close();
}
它给出了以下错误。
Exception in thread "main" java.sql.SQLException: Field 'Pre' doesn't have a default value
Pre 是数据库中的下一行,它没有默认值。
我的问题是,那么这个查询如何在 mysql 和 php 中运行良好。
P.S BatchID 是 newbatch 中的 int(10) autoincremented 值。
这是我的表结构。
CREATE TABLE IF NOT EXISTS `newbatch` (
`BatchID` int(10) NOT NULL AUTO_INCREMENT,
`Batch` varchar(100) NOT NULL,
`barcode` varchar(5) NOT NULL,
`Ly` varchar(5) NOT NULL DEFAULT '0',
`PG` varchar(5) NOT NULL,
`Pre` varchar(5) NOT NULL,
`Flu` varchar(5) NOT NULL,
`FluID` varchar(100) DEFAULT NULL,
`DateCreated` varchar(100) DEFAULT NULL,
`Comments` varchar(500) DEFAULT NULL,
PRIMARY KEY (`BatchID`),
UNIQUE KEY `FluID` (`FluID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000160 ;
【问题讨论】:
-
你能展示一下表格的结构吗?
-
show create table newbatch会有所帮助。 -
我感觉你刚刚学习Java,考虑使用prepared statement。
-
@BenSchro10 是的,我是 Java 新手。我以前用过,但直到最近才用得太多。我也知道准备好的声明。但我想它会抛出同样的错误..
-
我刚刚尝试在使用您的
CREATE语句创建表格后在 phpMyAdmin 中执行您的查询 - 它没有工作(您遇到相同的错误)。我认为必须进行其他操作才能使其在 PHP 中运行。