Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.j256.ormlite.db;
  
  import java.util.List;
  
Microsoft SQL server database type information used to create the tables, etc..

WARNING: I have not tested this unfortunately because of a lack of permanent access to a MSSQL instance.

Author(s):
graywatson
 
 public class SqlServerDatabaseType extends BaseDatabaseType implements DatabaseType {
 
 	private final static String DATABASE_URL_PORTION = "sqlserver";
 	private final static String DRIVER_CLASS_NAME = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
 	private final static String DATABASE_NAME = "SQL Server";
 
 	private final static FieldConverter byteConverter = new ByteFieldConverter();
 	private final static FieldConverter booleanConverter = new BooleanNumberFieldConverter();
 
 	public boolean isDatabaseUrlThisType(String urlString dbTypePart) {
 		return .equals(dbTypePart);
 	}
 
 	protected String getDriverClassName() {
 	}
 
 	public String getDatabaseName() {
 		return ;
 	}
 
 	public FieldConverter getFieldConverter(DataType dataType) {
 		// we are only overriding certain types
 		switch (dataType) {
 			case  :
 			case  :
 				return ;
 			case  :
 				return ;
 			default :
 				return super.getFieldConverter(dataType);
 		}
 	}
 
 	protected void appendBooleanType(StringBuilder sb) {
 		sb.append("BIT");
 	}
 
 	protected void appendByteType(StringBuilder sb) {
 		// TINYINT exists but it gives 0-255 unsigned
 		// http://msdn.microsoft.com/en-us/library/ms187745.aspx
 		sb.append("SMALLINT");
 	}
 
 	protected void appendDateType(StringBuilder sbint fieldWidth) {
 		// TIMESTAMP is some sort of internal database type
 		// http://www.sqlteam.com/article/timestamps-vs-datetime-data-types
 		sb.append("DATETIME");
 	}
 
 	protected void appendByteArrayType(StringBuilder sb) {
 		sb.append("IMAGE");
 	}
 
 	protected void appendSerializableType(StringBuilder sb) {
 		sb.append("IMAGE");
 	}
 
 	protected void configureGeneratedId(StringBuilder sbFieldType fieldTypeList<StringstatementsBefore,
 			List<StringadditionalArgsList<StringqueriesAfter) {
 		sb.append("IDENTITY ");
 		configureId(sbfieldTypestatementsBeforeadditionalArgsqueriesAfter);
 	}
 
 	public void appendEscapedEntityName(StringBuilder sbString word) {
 		sb.append('\"').append(word).append('\"');
 	}
 
	public boolean isLimitAfterSelect() {
		return true;
	}
	public void appendLimitValue(StringBuilder sbint limitInteger offset) {
		sb.append("TOP ").append(limit).append(' ');
	}
	public boolean isOffsetSqlSupported() {
		// there is no easy way to do this in this database type
		return false;
	}

Conversion from the byte Java field to the SMALLINT Jdbc type because TINYINT looks to be 0-255 and unsigned.
	private static class ByteFieldConverter implements FieldConverter {
		public SqlType getSqlType() {
			// store it as a short
			return .;
		}
		public Object parseDefaultString(FieldType fieldTypeString defaultStr) {
			return Short.parseShort(defaultStr);
		}
		public Object javaToSqlArg(FieldType fieldTypeObject javaObject) {
			// convert the Byte arg to be a short
			byte byteVal = (BytejavaObject;
			return (shortbyteVal;
		}
		public Object resultToJava(FieldType fieldTypeDatabaseResults resultsint dbColumnPosthrows SQLException {
			// starts as a short and then gets converted to a byte on the way out
			short shortVal = results.getShort(dbColumnPos);
			// make sure the database value doesn't overflow the byte
			if (shortVal < .) {
				return .;
else if (shortVal > .) {
				return .;
else {
				return (byteshortVal;
			}
		}
		public boolean isStreamType() {
			return false;
		}
	}
New to GrepCode? Check out our FAQ X