예제 #1
0
        static void Main(string[] args)
        {
            //SQLiteConnection conn = new SQLiteConnection();
            DataFactory df = new DataFactory(DatabaseProvider.SQLite, "Data Source=foo.db3; Pooling=true; Read Only=false; FailIfMissing=false");

            DataSet ds = new DataSet();

            ds.ReadXml(@"c:\test.xml");

            df.CreateTable("z", ds.Tables[0]);
            df.AppendTable("z", ds.Tables[0]);

            //df.ExecuteNonQuery("create table foobar(id int, name varchar(100), phone varchar(10))");


            //for (int i = 0; i < 10; i++)
            //{
            //    string q = string.Format("insert into foobar(id, name, phone) values ({0}, '{1}', '{2}')", i, "Name" + i, "Phone" + i);
            //    df.ExecuteNonQuery(q);
            //}

            //DataSet ds = new DataSet();
            //ds = df.Fill("select * from foobar");
        }
예제 #2
0
        private void btnImport_Click(object sender, EventArgs e)
        {
            const string OUT_TABLENAME = @"CSVImportTest";
            const int    MAX_BUFFER    = 100;
            var          start         = DateTime.Now;

            try
            {
                var dci = csfSaveAs.DataConnectionInfo;

                if (dci.InputSource != InputSource.Database)
                {
                    throw new ArgumentException("Please choose a database");
                }

                var df = new DataFactory(dci.Provider, dci.ConnectionString);
                df.TestConnection();

                if (df.Database.GetTables(OUT_TABLENAME, QueryFilter.Exact).Count >= 1)
                {
                    df.ExecuteNonQuery("drop table " + OUT_TABLENAME);
                }

                int nr = 0;

                using (DataTable dt = new DataTable(OUT_TABLENAME))
                {
                    var options = new DelimiterImportOptions(",");
                    foreach (var item in ImportManager.ImportRow(txtFilename.Value, options))
                    {
                        nr++;

                        #region Init Columns Definition
                        if (nr == 1)
                        {
                            DataUtil.CopyColumns(item.Table.Columns, dt.Columns);
                        }
                        #endregion

                        var dr = dt.NewRow();
                        DataUtil.CopyRow(item, dr);
                        dt.Rows.Add(dr);

                        if (nr % MAX_BUFFER == 0)
                        {
                            df.AppendTable(OUT_TABLENAME, dt);
                            dt.Rows.Clear();
                        }
                    }

                    if (dt.Rows.Count > 0)
                    {
                        df.AppendTable(OUT_TABLENAME, dt);
                        dt.Rows.Clear();
                    }
                }

                MessageBox.Show("Done Elapsed = " + DateUtil.ElapsedTime(start, DateTime.Now));
            }
            catch (Exception ex)
            {
                FormUtil.WinException(ex);
            }
        }