コード例 #1
0
        public void GetValuesTest()
        {
            var s = new StringBuilder();

            s.AppendLine("Boolean,Byte,Bytes,Char,Chars,DateTime,Decimal,Double,Float,Guid,Short,Int,Long,Null");
            s.AppendLine("true,1,0x0102,a,ab,1/1/2019,1.23,4.56,7.89,eca0c8c6-9a2a-4e6c-8599-3561abda13f1,1,2,3,null");
            using (var reader = new StringReader(s.ToString()))
                using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                {
                    csv.Configuration.Delimiter = ",";
                    csv.Configuration.TypeConverterOptionsCache.GetOptions <string>().NullValues.Add("null");
                    var dataReader = new CsvDataReader(csv);
                    dataReader.Read();

                    Assert.AreEqual(true, dataReader.GetBoolean(0));
                    Assert.AreEqual(1, dataReader.GetByte(1));

                    byte[] byteBuffer = new byte[2];
                    dataReader.GetBytes(2, 0, byteBuffer, 0, byteBuffer.Length);
                    Assert.AreEqual(0x1, byteBuffer[0]);
                    Assert.AreEqual(0x2, byteBuffer[1]);

                    Assert.AreEqual('a', dataReader.GetChar(3));

                    char[] charBuffer = new char[2];
                    dataReader.GetChars(4, 0, charBuffer, 0, charBuffer.Length);
                    Assert.AreEqual('a', charBuffer[0]);
                    Assert.AreEqual('b', charBuffer[1]);

                    Assert.IsNull(dataReader.GetData(0));
                    Assert.AreEqual(DateTime.Parse("1/1/2019"), dataReader.GetDateTime(5));
                    Assert.AreEqual(typeof(string).Name, dataReader.GetDataTypeName(0));
                    Assert.AreEqual(1.23m, dataReader.GetDecimal(6));
                    Assert.AreEqual(4.56d, dataReader.GetDouble(7));
                    Assert.AreEqual(typeof(string), dataReader.GetFieldType(0));
                    Assert.AreEqual(7.89f, dataReader.GetFloat(8));
                    Assert.AreEqual(Guid.Parse("eca0c8c6-9a2a-4e6c-8599-3561abda13f1"), dataReader.GetGuid(9));
                    Assert.AreEqual(1, dataReader.GetInt16(10));
                    Assert.AreEqual(2, dataReader.GetInt32(11));
                    Assert.AreEqual(3, dataReader.GetInt64(12));
                    Assert.AreEqual("Boolean", dataReader.GetName(0));
                    Assert.AreEqual(0, dataReader.GetOrdinal("Boolean"));

                    Assert.AreEqual("true", dataReader.GetString(0));
                    Assert.AreEqual("true", dataReader.GetValue(0));

                    var objectBuffer = new object[14];
                    dataReader.GetValues(objectBuffer);
                    Assert.AreEqual("true", objectBuffer[0]);
                    Assert.AreEqual(DBNull.Value, objectBuffer[13]);
                    Assert.IsTrue(dataReader.IsDBNull(13));
                }
        }
コード例 #2
0
        internal static void CheckReferenceData()
        {
            // csv...
            string data = ResourceHelper.GetString("AmxMobile.Services.Resources.Countries.csv");
            using (StringReader reader = new StringReader(data))
            {
                CsvDataReader csv = new CsvDataReader(reader, true);

                // txn...
                using (TransactionState txn = Database.StartTransaction())
                {
                    try
                    {
                        while (csv.Read())
                        {
                            // get...
                            string name = csv.GetString("Common Name");
                            if (name == null)
                                throw new InvalidOperationException("'name' is null.");
                            if (name.Length == 0)
                                throw new InvalidOperationException("'name' is zero-length.");

                            // get...
                            Country country = Country.GetByName(name);
                            if (country == null)
                            {
                                country = new Country();
                                country.Name = name;
                                if (string.Compare(name, "United Kingdom", true, Cultures.System) == 0)
                                    country.Ordinal = 1000;
                                if (string.Compare(name, "United States", true, Cultures.System) == 0)
                                    country.Ordinal = 1001;
                                else
                                    country.Ordinal = 9999;

                                // save...
                                country.SaveChanges();
                            }
                        }

                        // ok...
                        txn.Commit();
                    }
                    catch (Exception ex)
                    {
                        txn.Rollback(ex);
                        throw new InvalidOperationException("The operation failed", ex);
                    }
                }

            }
        }
コード例 #3
0
        public void ReadWithNoHeaderTest()
        {
            var s = new StringBuilder();

            s.AppendLine("1,one");
            s.AppendLine("2,two");
            using (var reader = new StringReader(s.ToString()))
                using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
                {
                    csv.Configuration.HasHeaderRecord = false;
                    csv.Configuration.Delimiter       = ",";
                    var dataReader = new CsvDataReader(csv);

                    dataReader.Read();
                    Assert.AreEqual(1, dataReader.GetInt32(0));
                    Assert.AreEqual("one", dataReader.GetString(1));

                    dataReader.Read();
                    Assert.AreEqual(2, dataReader.GetInt32(0));
                    Assert.AreEqual("two", dataReader.GetString(1));
                }
        }
コード例 #4
0
        private static void Main(string[] args)
        {
            using (var textReader = new StreamReader(@".\test.csv"))
            {
                var config = new CsvConfiguration(CultureInfo.InvariantCulture)
                {
                    HasHeaderRecord = false
                };
                var csvReader     = new CsvReader(textReader, config);
                var csvDataReader = new CsvDataReader(csvReader);
                while (csvDataReader.Read())
                {
                    for (int i = 0; i < csvDataReader.FieldCount; i++)
                    {
                        Console.Write(csvDataReader.GetString(i) + " ");
                    }
                    Console.WriteLine(" ");
                }
            }

            Console.Read();
        }