Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过java将整数的默认值插入sql server_Java_Insert_Sql Server 2012_Prepared Statement - Fatal编程技术网

通过java将整数的默认值插入sql server

通过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语句来检查一个值是否等于999999,以及它是否等于999999,需要将默认值插入数据库中

       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 (?, ?, ?)";