public void AddWithValue(string key, string value, System.Text.Encoding enc) { var data = new MyStructData(); if (value == "") { data.myString = ""; data.type = MySqlDataType.VAR_STRING; } else if (value != null) { //replace some value if (enc != null) { AddWithValue(key, enc.GetBytes(value)); return; } else { data.myString = value.Replace("\'", "\\\'"); data.type = MySqlDataType.VAR_STRING; } } else { data.myString = null; data.type = MySqlDataType.NULL; } _values[key] = data; }
public void AddWithValue(string key, string value, IStringConverter strConv) { var data = new MyStructData(); if (value == "") { data.myString = ""; data.type = MySqlDataType.VAR_STRING; } else if (value != null) { //replace some value if (strConv != null) { AddWithValue(key, strConv.WriteConv(value)); return; } else { data.myString = value.Replace("\'", "\\\'"); data.type = MySqlDataType.VAR_STRING; } } else { data.myString = null; data.type = MySqlDataType.NULL; } _values[key] = data; }
public void AddWithValue(string key, short value) { var data = new MyStructData(); data.myInt32 = value; data.type = Types.SHORT; _values[key] = data; }
public void AddWithValue(string key, long value) { var data = new MyStructData(); data.myInt64 = value; data.type = Types.LONGLONG; _values[key] = data; }
public void AddWithValue(string key, double value) { var data = new MyStructData(); data.myDouble = value; data.type = Types.DOUBLE; _values[key] = data; }
public void AddWithValue(string key, decimal value) { var data = new MyStructData(); data.myString = value.ToString(); data.type = Types.STRING; _values[key] = data; }
public void AddWithValue(string key, float value) { var data = new MyStructData(); data.myDouble = value; data.type = Types.FLOAT; _values[key] = data; }
public void AddWithValue(string key, DateTime value) { var data = new MyStructData(); data.myDateTime = value; data.type = Types.DATETIME; _values[key] = data; }
public void AddWithValue(string key, char value) { //1 unicode char => 2 bytes store var data = new MyStructData(); data.myUInt32 = value; data.type = Types.LONGLONG; _values[key] = data; }
public void AddWithValue(string key, sbyte value) { //tiny int signed (-128 to 127) var data = new MyStructData(); data.myInt32 = value; data.type = Types.TINY; _values[key] = data; }
/// <summary> /// add null data /// </summary> /// <param name="key"></param> public void SetNull(string key) { var data = new MyStructData(); data.myString = null; data.type = MySqlDataType.NULL; //data.myUInt64 = value; //data.type = Types.LONGLONG; _values[key] = data; }
public void AddWithValue(string key, char value) { //1 unicode char => 2 bytes store var data = new MyStructData(); //data.myUInt32 = value; data.myString = value.ToString(); data.type = MySqlDataType.STRING; //TODO:? _values[key] = data; }
public void AddWithValue(string key, byte value) { var data = new MyStructData(); data.myString = value.ToString(); data.type = Types.STRING; //data.myInt32 = value; //data.type = Types.TINY; _values[key] = data; }
public void AddWithValue(string key, ulong value) { var data = new MyStructData(); data.myString = value.ToString(); data.type = Types.STRING; //data.myUInt64 = value; //data.type = Types.LONGLONG; _values[key] = data; }
public void AddWithValue(string key, uint value) { //INT 4 min max //signed -2147483648 2147483647 //unsigned 0 4294967295 //--------------------------- var data = new MyStructData(); data.myUInt32 = value; data.type = Types.LONGLONG;//** _values[key] = data; }
public void AddWithValue(string key, ushort value) { //INT 2 min max //signed -32768 32767 //unsigned 0 65535 //--------------------------- var data = new MyStructData(); data.myString = value.ToString(); data.type = Types.STRING; //data.myUInt32 = value; //data.type = Types.SHORT; _values[key] = data; }
public void AddWithValue(string key, byte[] value) { var data = new MyStructData(); if (value != null) { data.myBuffer = value; data.type = Types.LONG_BLOB; } else { data.myBuffer = null; data.type = Types.NULL; } _values[key] = data; }
//------------------------------------------------------- //user's bound data values public void AddWithValue(string key, string value) { var data = new MyStructData(); if (value != null) { data.myString = value; data.type = Types.VAR_STRING; } else { data.myString = null; data.type = Types.NULL; } _values[key] = data; }
public void AddWithValue(string key, string value) { var data = new MyStructData(); if (value != null) { //replace some value value = value.Replace("\'", "\\\'"); data.myString = value; data.type = MySqlDataType.VAR_STRING; } else { data.myString = null; data.type = MySqlDataType.NULL; } _values[key] = data; }
static void FormatAndAppendData(StringBuilder stbuilder, ref MyStructData data) { //!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //TODO: review here , data range //!!!!!!!!!!!!!!!!!!!!!!!!!!!!! switch (data.type) { case MySqlDataType.BLOB: case MySqlDataType.LONG_BLOB: case MySqlDataType.MEDIUM_BLOB: case MySqlDataType.TINY_BLOB: MySqlStringToHexUtils.ConvertByteArrayToHexWithMySqlPrefix(data.myBuffer, stbuilder); break; case MySqlDataType.DATE: case MySqlDataType.NEWDATE: stbuilder.Append('\''); AppendOnlyDate(stbuilder, data.myDateTime); stbuilder.Append('\''); break; case MySqlDataType.DATETIME: stbuilder.Append('\''); //#if DEBUG //string preview_v = data.myDateTime.ToString("s"); //#endif stbuilder.Append(data.myDateTime.ToString("s")); stbuilder.Append('\''); break; case MySqlDataType.TIMESTAMP: case MySqlDataType.TIME: //TODO: review here stbuilder.Append('\''); AppendOnlyTime(stbuilder, data.myDateTime); stbuilder.Append('\''); break; case MySqlDataType.STRING: case MySqlDataType.VARCHAR: case MySqlDataType.VAR_STRING: stbuilder.Append('\''); //TODO: check /escape string here **** stbuilder.Append(data.myString); stbuilder.Append('\''); break; case MySqlDataType.BIT: stbuilder.Append(Encoding.ASCII.GetString(new byte[] { (byte)data.myInt32 })); break; case MySqlDataType.DOUBLE: stbuilder.Append(data.myDouble.ToString()); break; case MySqlDataType.FLOAT: stbuilder.Append(((float)data.myDouble).ToString()); break; case MySqlDataType.TINY: case MySqlDataType.SHORT: case MySqlDataType.LONG: case MySqlDataType.INT24: case MySqlDataType.YEAR: stbuilder.Append(data.myInt32.ToString()); break; case MySqlDataType.LONGLONG: stbuilder.Append(data.myInt64.ToString()); break; case MySqlDataType.DECIMAL: stbuilder.Append(data.myDecimal.ToString()); break; default: stbuilder.Append(data.myUInt64.ToString()); break; } }
MyStructData ReadCurrentRowTextProtocol(MySqlFieldDefinition f) { BufferReader r = this.bufferReader; MyStructData data = new MyStructData(); MySqlDataType type = (MySqlDataType)f.FieldType; string numberString = null; switch (type) { case MySqlDataType.TIMESTAMP: case MySqlDataType.DATE: case MySqlDataType.DATETIME: case MySqlDataType.NEWDATE: { QueryParsingConfig qparsingConfig = _queryParsingConf; tmpStringBuilder.Length = 0; //clear data.myString = r.ReadLengthCodedString(this.StringConverter); data.type = type; if (data.myString == null) { data.type = MySqlDataType.NULL; return(data); } if (qparsingConfig.DateStrings) { return(data); } if (data.myString == "0000-00-00") { data.myDateTime = DateTime.MinValue; //? data.type = type; return(data); } //------------------------------------------------------------- // var originalString = dateString; // if (field.type === Types.DATE) { // dateString += ' 00:00:00'; // } tmpStringBuilder.Append(data.myString); //string originalString = dateString; if (type == MySqlDataType.DATE) { tmpStringBuilder.Append(" 00:00:00"); } // if (timeZone !== 'local') { // dateString += ' ' + timeZone; // } if (!qparsingConfig.UseLocalTimeZone) { tmpStringBuilder.Append(' ' + qparsingConfig.TimeZone); } //var dt; // dt = new Date(dateString); // if (isNaN(dt.getTime())) { // return originalString; // } data.myDateTime = DateTime.Parse(tmpStringBuilder.ToString(), System.Globalization.CultureInfo.InvariantCulture); data.type = type; tmpStringBuilder.Length = 0; //clear } return(data); case MySqlDataType.TINY: case MySqlDataType.SHORT: case MySqlDataType.LONG: case MySqlDataType.INT24: case MySqlDataType.YEAR: //TODO: review here, data.myString = numberString = r.ReadLengthCodedString(this.StringConverter); if (numberString == null || (f.IsZeroFill && numberString[0] == '0') || numberString.Length == 0) { data.type = MySqlDataType.NULL; } else { data.myInt32 = Convert.ToInt32(numberString); data.type = type; } return(data); case MySqlDataType.FLOAT: case MySqlDataType.DOUBLE: data.myString = numberString = r.ReadLengthCodedString(this.StringConverter); if (numberString == null || (f.IsZeroFill && numberString[0] == '0')) { data.type = MySqlDataType.NULL; } else { data.myDouble = Convert.ToDouble(numberString); data.type = type; } return(data); // return (numberString === null || (field.zeroFill && numberString[0] == "0")) // ? numberString : Number(numberString); case MySqlDataType.NEWDECIMAL: case MySqlDataType.LONGLONG: // numberString = parser.parseLengthCodedString(); // return (numberString === null || (field.zeroFill && numberString[0] == "0")) // ? numberString // : ((supportBigNumbers && (bigNumberStrings || (Number(numberString) > IEEE_754_BINARY_64_PRECISION))) // ? numberString // : Number(numberString)); QueryParsingConfig config = _queryParsingConf; data.myString = numberString = r.ReadLengthCodedString(this.StringConverter); if (numberString == null || (f.IsZeroFill && numberString[0] == '0')) { data.type = MySqlDataType.NULL; } else if (config.SupportBigNumbers && (config.BigNumberStrings || (Convert.ToInt64(numberString) > Packet.IEEE_754_BINARY_64_PRECISION))) { //store as string ? //TODO: review here again data.myString = numberString; data.type = type; throw new NotSupportedException(); } else if (type == MySqlDataType.LONGLONG) { data.myInt64 = Convert.ToInt64(numberString); data.type = type; } else //decimal { data.myDecimal = Convert.ToDecimal(numberString); data.type = type; } return(data); case MySqlDataType.BIT: data.myBuffer = r.ReadLengthCodedBuffer(); data.type = type; return(data); // return parser.parseLengthCodedBuffer(); case MySqlDataType.STRING: case MySqlDataType.VAR_STRING: case MySqlDataType.TINY_BLOB: case MySqlDataType.MEDIUM_BLOB: case MySqlDataType.LONG_BLOB: case MySqlDataType.BLOB: if (f.MarkedAsBinary) { data.myBuffer = r.ReadLengthCodedBuffer(); data.type = (data.myBuffer != null) ? type : MySqlDataType.NULL; } else { data.myString = r.ReadLengthCodedString(this.StringConverter); data.type = (data.myString != null) ? type : MySqlDataType.NULL; } return(data); // return (field.charsetNr === Charsets.BINARY) // ? parser.parseLengthCodedBuffer() // : parser.parseLengthCodedString(); case MySqlDataType.GEOMETRY: //TODO: unfinished data.type = MySqlDataType.GEOMETRY; return(data); default: data.myString = r.ReadLengthCodedString(this.StringConverter); data.type = type; return(data); } }
MyStructData ReadCurrentRowBinaryProtocol(MySqlFieldDefinition f) { MySqlDataType fieldType = (MySqlDataType)f.FieldType; MyStructData myData = new MyStructData(); BufferReader r = this.bufferReader; switch (fieldType) { case MySqlDataType.TIMESTAMP: // case MySqlDataType.DATE: // case MySqlDataType.DATETIME: // case MySqlDataType.NEWDATE: // r.ReadLengthCodedDateTime(out myData.myDateTime); myData.type = fieldType; return(myData); case MySqlDataType.TINY: //length = 1; myData.myInt32 = r.U1(); myData.type = fieldType; return(myData); case MySqlDataType.SHORT: //length = 2; case MySqlDataType.YEAR: //length = 2; myData.myInt32 = (int)r.U2(); myData.type = fieldType; return(myData); case MySqlDataType.INT24: case MySqlDataType.LONG: //length = 4; myData.myInt32 = (int)r.U4(); myData.type = fieldType; return(myData); case MySqlDataType.FLOAT: myData.myDouble = r.ReadFloat(); myData.type = fieldType; return(myData); case MySqlDataType.DOUBLE: myData.myDouble = r.ReadDouble(); myData.type = fieldType; return(myData); case MySqlDataType.NEWDECIMAL: myData.myDecimal = r.ReadDecimal(); myData.type = fieldType; return(myData); case MySqlDataType.LONGLONG: myData.myInt64 = r.ReadInt64(); myData.type = fieldType; return(myData); case MySqlDataType.VARCHAR: myData.myString = r.ReadLengthCodedString(this.StringConverter); myData.type = fieldType; return(myData); case MySqlDataType.BIT: myData.myBuffer = r.ReadLengthCodedBuffer(); myData.type = fieldType; return(myData); case MySqlDataType.STRING: case MySqlDataType.VAR_STRING: case MySqlDataType.TINY_BLOB: case MySqlDataType.MEDIUM_BLOB: case MySqlDataType.LONG_BLOB: case MySqlDataType.BLOB: if (f.MarkedAsBinary) { myData.myBuffer = r.ReadLengthCodedBuffer(); } else { myData.myString = r.ReadLengthCodedString(this.StringConverter); } myData.type = fieldType; return(myData); case MySqlDataType.GEOMETRY: throw new NotSupportedException(); default: myData.myBuffer = r.ReadLengthCodedBuffer(); myData.type = MySqlDataType.NULL; return(myData); } }
public object GetValue(int colIndex) { MyStructData data = cells[colIndex]; switch (data.type) { case MySqlDataType.BLOB: case MySqlDataType.LONG_BLOB: case MySqlDataType.MEDIUM_BLOB: case MySqlDataType.TINY_BLOB: return(data.myBuffer); case MySqlDataType.DATE: case MySqlDataType.NEWDATE: return(data.myDateTime); //stbuilder.Append('\''); //stbuilder.Append(data.myDateTime.ToString("yyyy-MM-dd")); //stbuilder.Append('\''); //break; case MySqlDataType.DATETIME: //stbuilder.Append('\''); //stbuilder.Append(data.myDateTime.ToString("yyyy-MM-dd hh:mm:ss")); //stbuilder.Append('\''); //break; return(data.myDateTime); case MySqlDataType.TIMESTAMP: case MySqlDataType.TIME: ////TODO: review here //stbuilder.Append('\''); //stbuilder.Append(data.myDateTime.ToString("hh:mm:ss")); //stbuilder.Append('\''); //break; return(data.myDateTime); case MySqlDataType.STRING: case MySqlDataType.VARCHAR: case MySqlDataType.VAR_STRING: //stbuilder.Append('\''); ////TODO: check /escape string here **** //stbuilder.Append(data.myString); //stbuilder.Append('\''); //break; return(data.myString); case MySqlDataType.BIT: throw new NotSupportedException(); // stbuilder.Append(Encoding.ASCII.GetString(new byte[] { (byte)data.myInt32 })); case MySqlDataType.DOUBLE: return(data.myDouble); //stbuilder.Append(data.myDouble.ToString()); //break; case MySqlDataType.FLOAT: return(data.myDouble); //TODO: review here //stbuilder.Append(((float)data.myDouble).ToString()); case MySqlDataType.TINY: case MySqlDataType.SHORT: case MySqlDataType.LONG: case MySqlDataType.INT24: case MySqlDataType.YEAR: return(data.myInt32); //stbuilder.Append(data.myInt32.ToString()); case MySqlDataType.LONGLONG: return(data.myInt64); //stbuilder.Append(data.myInt64.ToString()); case MySqlDataType.DECIMAL: //stbuilder.Append(data.myDecimal.ToString()); return(data.myDecimal); default: throw new NotSupportedException(); } }
internal bool TryGetData(string key, out MyStructData data) { return(_values.TryGetValue(key, out data)); }