通过java将整数的默认值插入sql server
我试图使用if语句来检查一个值是否等于999999,以及它是否等于999999,需要将默认值插入数据库中通过java将整数的默认值插入sql server,java,insert,sql-server-2012,prepared-statement,Java,Insert,Sql Server 2012,Prepared Statement,我试图使用if语句来检查一个值是否等于999999,以及它是否等于999999,需要将默认值插入数据库中 if (s.getYear() == 999999) { pstatement.setString(3, "DEFAULT"); } else { pstatement.setInt(3, s.getYear()); } 很明显,sqlserver拒绝将Str
if (s.getYear() == 999999)
{
pstatement.setString(3, "DEFAULT");
}
else
{
pstatement.setInt(3, s.getYear());
}
很明显,sqlserver拒绝将String/Varchar插入整数字段
com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting the nvarchar value 'DEFAULT' to data type int.
有人知道如何插入该字段的默认值吗
谢谢您必须使用SQL从数据库端管理它, SQL 或 Hibernate如果使用Hibernate,则可以使用@Column设置默认值
当通过JDBC通知Sql Server在插入期间使用列的默认值时,您需要显式地修改DML语句,以便将文本默认值用作字段的值,即伪代码
if (willUseDefault)
sql = "INSERT INTO MyTable(Col1, Col2, ColWithDefault) VALUES (?, ?, DEFAULT)";
else
sql = "INSERT INTO MyTable(Col1, Col2, ColWithDefault) VALUES (?, ?, ?)";
然后,您将根本不为prepared语句的参数3绑定值
使用列的默认值的另一种方法是完全忽略插入列列表中的字段。这同样需要您调整DML语句
if (willUseDefault)
sql = "INSERT INTO MyTable(Col1, Col2) VALUES (?, ?)";
else
sql = "INSERT INTO MyTable(Col1, Col2, ColWithDefault) VALUES (?, ?, ?)";
如果以这种方式对多个列进行有条件的默认设置,这可能会变得相当混乱。@BorisPavlović我相信OP类似,似乎无法通过参数设置默认值。
if (willUseDefault)
sql = "INSERT INTO MyTable(Col1, Col2, ColWithDefault) VALUES (?, ?, DEFAULT)";
else
sql = "INSERT INTO MyTable(Col1, Col2, ColWithDefault) VALUES (?, ?, ?)";
if (willUseDefault)
sql = "INSERT INTO MyTable(Col1, Col2) VALUES (?, ?)";
else
sql = "INSERT INTO MyTable(Col1, Col2, ColWithDefault) VALUES (?, ?, ?)";