예제 #1
0
        public void TypesNames()
        {
            NpgsqlCommand command = new NpgsqlCommand("select * from tablea where 1 = 2;", TheConnection);

            NpgsqlDataReader dr = command.ExecuteReader();

            dr.Read();

            Assert.AreEqual("int4", dr.GetDataTypeName(0));
            Assert.AreEqual("text", dr.GetDataTypeName(1));
            Assert.AreEqual("int4", dr.GetDataTypeName(2));
            Assert.AreEqual("int8", dr.GetDataTypeName(3));
            Assert.AreEqual("bool", dr.GetDataTypeName(4));

            dr.Close();

            command.CommandText = "select * from tableb where 1 = 2";

            dr = command.ExecuteReader();

            dr.Read();

            Assert.AreEqual("int4", dr.GetDataTypeName(0));
            Assert.AreEqual("int2", dr.GetDataTypeName(1));
            Assert.AreEqual("timestamp", dr.GetDataTypeName(2));
            Assert.AreEqual("numeric", dr.GetDataTypeName(3));
        }
예제 #2
0
        //input : table that should be loaded to dataGridView, data constrain
        //this function should load the given table, in a given condition
        public void ldTable(string tblName, string constraint)
        {
            try
            {
                dataGridView1.Rows.Clear();
                dataGridView1.Columns.Clear();
            }
            catch (InvalidOperationException) { }
            this.reader = AskPgSQL.Fullinq(tblName, constraint);
            if (this.reader == null)
            {
                return;
            }
            nowTable = tblName;
            for (int i = 0; i < reader.VisibleFieldCount; i++)
            {
                Create_NewCol(reader.GetName(i), reader.GetDataTypeName(i).ToString());
            }

            while (reader.Read())
            {
                int newrows = dataGridView1.Rows.Add();
                for (int i = 0; i < reader.VisibleFieldCount; i++)
                {
                    readerJudge(this.reader, newrows, i);
                }
                if (dataGridView1.Rows.Count > 100)
                {
                    break;
                }
            }
        }
예제 #3
0
        public static long?SafeGetLongNpg(this NpgsqlDataReader rd, int col, long?valorDefecto)
        {
            if (rd.IsDBNull(col))
            {
                return(valorDefecto);
            }

            string tipo    = rd.GetDataTypeName(col);
            long?  regreso = 0;

            switch (tipo.ToUpper())
            {
            case "INT2":
                regreso = rd.GetInt16(col);
                break;

            case "INT4":
                regreso = rd.GetInt32(col);
                break;

            case "INT8":
                regreso = rd.GetInt64(col);
                break;

            case "SERIAL":
                regreso = rd.GetInt32(col);
                break;

            default:
                regreso = (long?)rd.GetDecimal(col);
                break;
            }

            return(regreso);
        }
예제 #4
0
        private static IList <Field> GetHeaderFromReader(NpgsqlDataReader reader)
        {
            if (reader.FieldCount < 1)
            {
                return(null);
            }
            var header = new List <Field>();

            for (var index = 0; index < reader.FieldCount; index++)
            {
                header.Add(new Field {
                    Index = index, Name = reader.GetName(index), Type = reader.GetDataTypeName(index)
                });
            }
            return(header);
        }
예제 #5
0
        public static long SafeGetLongNotNullNpg(this NpgsqlDataReader rd, int col)
        {
            long regreso = 0;

            var valorColumna = rd.GetValue(col);

            if (rd.IsDBNull(col))
            {
                return(regreso);
            }

            string tipo = rd.GetDataTypeName(col);


            switch (tipo.ToUpper())
            {
            case "INT2":
                regreso = rd.GetInt16(col);
                break;

            case "INT4":
                regreso = rd.GetInt32(col);
                break;

            case "INT8":
                regreso = rd.GetInt64(col);
                break;

            case "SERIAL":
                regreso = rd.GetInt32(col);
                break;

            default:
                long?regresoNull = (long?)rd.GetDecimal(col);
                if (regresoNull != null)
                {
                    regreso = (long)regresoNull;
                }

                break;
            }

            return(regreso);
        }
 /// <summary>
 /// Gets the data type name of a column, given a zero based ordinal.
 /// </summary>
 /// <param name="i"></param>
 /// <returns></returns>
 public string GetDataTypeName(int i)
 {
     return(_rdr.GetDataTypeName(i));
 }
예제 #7
0
 public override string GetDataTypeName(int ordinal)
 {
     return(source.GetDataTypeName(ordinal));
 }
 /// <summary>
 /// Gets the data type name of a column, given a zero based ordinal.
 /// </summary>
 public string GetDataTypeName(int i) => _rdr.GetDataTypeName(i);