Inheritance: ISerializable
Exemplo n.º 1
0
        private QueryParameter PrepareParameter(DeveelDbParameter parameter)
        {
            // TODO: If we have a Value that is a Stream object, upload it and get
            //       back the object ID to replace the value

            if (parameter.SqlType == SqlTypeCode.Unknown)
                throw new ArgumentException("Cannot resolve Unknown SQL Type");

            var name = parameter.ParameterName;
            if (String.IsNullOrEmpty(name))
                name = QueryParameter.Marker;

            var meta = new List<DataTypeMeta>();
            if (parameter.Size > 0)
                meta.Add(new DataTypeMeta("MaxSize", parameter.Size.ToString()));
            if (parameter.Precision > 0)
                meta.Add(new DataTypeMeta("Precision", parameter.Precision.ToString()));
            if (parameter.Scale > 0)
                meta.Add(new DataTypeMeta("Scale", parameter.Scale.ToString()));
            if (!String.IsNullOrEmpty(parameter.Locale))
                meta.Add(new DataTypeMeta("Locale", parameter.Locale));

            var dataType = SqlType.Resolve(parameter.SqlType, meta.ToArray());
            var value = dataType.CreateFrom(parameter.Value);

            var queryParameter = new QueryParameter(name, dataType, value);
            queryParameter.Direction = GetParamDirection(parameter.Direction);
            return queryParameter;
        }
Exemplo n.º 2
0
        private void PrepareCommand()
        {
            if (Parameters != null && Parameters.Count > 0) {
                preparedParameters = new List<QueryParameter>(Parameters.Count);

                foreach (DeveelDbParameter parameter in Parameters) {
                    DeveelDbLob lob = null;
                    if (parameter.Value is DeveelDbLob) {
                        lob = (DeveelDbLob) parameter.Value;
                    } else if (parameter.Value is Stream) {
                        var stream = (Stream) parameter.Value;
                        lob = new DeveelDbLob(parameter.Size);
                        stream.CopyTo(lob);
                    }

                    if (lob != null) {
                        var objId = DeveelDbLob.Upload(connection, lob);
                    }

                    var sqlType = parameter.GetSqlType();
                    var queryParam = new QueryParameter(parameter.ParameterName, sqlType);
                    queryParam.Value = sqlType.CreateFrom(parameter.Value);
                    preparedParameters.Add(queryParam);
                }
            }
        }
Exemplo n.º 3
0
        private QueryParameter PrepareParameter(DeveelDbParameter parameter)
        {
            // TODO: If we have a Value that is a Stream object, upload it and get
            //       back the object ID to replace the value

            var name = parameter.ParameterName;
            if (String.IsNullOrEmpty(name))
                name = QueryParameter.Marker;

            var meta = new [] {
                new DataTypeMeta("MaxSize", parameter.Size.ToString()),
                new DataTypeMeta("Precision", parameter.Precision.ToString()),
                new DataTypeMeta("Scale", parameter.Scale.ToString()),
             				new DataTypeMeta("Locale", parameter.Locale)
            };

            var dataType = SqlType.Resolve(parameter.SqlType, meta);
            var value = dataType.CreateFrom(parameter.Value);

            var queryParameter = new QueryParameter(name, dataType, value);
            queryParameter.Direction = GetParamDirection(parameter.Direction);
            return queryParameter;
        }
Exemplo n.º 4
0
        private SqlQuery CreateQuery()
        {
            QueryParameter[] queryParameters;
            if (prepared && preparedParameters != null) {
                queryParameters = preparedParameters.ToArray();
            } else {
                queryParameters = new QueryParameter[parameters.Count];
                for (int i = 0; i < parameters.Count; i++) {
                    var parameter = parameters[i];
                    var queryParam = PrepareParameter(parameter);
                    queryParameters[i] = queryParam;
                }
            }

            var query = new SqlQuery(CommandText, Connection.Settings.ParameterStyle);

            // now verify all parameter names are consistent
            foreach (var parameter in queryParameters) {
                if (connection.Settings.ParameterStyle == QueryParameterStyle.Marker) {
                    if (!String.IsNullOrEmpty(parameter.Name) &&
                        parameter.Name != QueryParameter.Marker)
                        throw new InvalidOperationException();
                } else if (connection.Settings.ParameterStyle == QueryParameterStyle.Named) {
                    if (String.IsNullOrEmpty(parameter.Name))
                        throw new InvalidOperationException("Named parameters must have a name defined.");

                    if (parameter.Name == QueryParameter.Marker)
                        throw new InvalidOperationException("Cannot set the parameter marker in a named parameter query.");

                    var paramName = parameter.Name;
                    if (paramName[0] == QueryParameter.NamePrefix)
                        paramName = paramName.Substring(1);

                    if (paramName.Length < 1)
                        throw new InvalidOperationException("Invalid parameter name: cannot specify only the variable bind prefix.");
                }

                query.Parameters.Add(parameter);
            }

            return query;
        }
Exemplo n.º 5
0
        private SqlQuery CreateQuery()
        {
            QueryParameter[] queryParameters;
            if (prepared && preparedParameters != null) {
                queryParameters = preparedParameters.ToArray();
            } else {
                queryParameters = new QueryParameter[parameters.Count];
                for (int i = 0; i < parameters.Count; i++) {
                    var parameter = parameters[i];
                    var queryParam = PrepareParameter(parameter);
                    queryParameters[i] = queryParam;
                }
            }

            var query = new SqlQuery(CommandText);

            // now verify all parameter names are consistent
            foreach (var parameter in queryParameters) {
                if (connection.Settings.ParameterStyle == QueryParameterStyle.Marker) {
                    if (!String.IsNullOrEmpty(parameter.Name) &&
                        parameter.Name != QueryParameter.Marker)
                        throw new InvalidOperationException();
                } else if (connection.Settings.ParameterStyle == QueryParameterStyle.Named) {
                    if (String.IsNullOrEmpty(parameter.Name))
                        throw new InvalidOperationException("Named parameters must have a name defined.");

                    if (parameter.Name == QueryParameter.Marker)
                        throw new InvalidOperationException();
                    if (parameter.Name.Length <= 1)
                        throw new InvalidOperationException();
                    if (!Char.IsLetter(parameter.Name[0]) &&
                        parameter.Name[0] != QueryParameter.NamePrefix)
                        throw new InvalidOperationException();
                }

                query.Parameters.Add(parameter);
            }

            return query;
        }