首页 > 代码库 > C# 实现DB文件的导入导出功能

C# 实现DB文件的导入导出功能

1.     DB文件的导出

private void InsertDB(DataTable dt, string FileName)        {            try            {                string userIds = string.Empty;                string[] str = ccbUserName.Text.Split(,);                for (int s = 0; s < str.Length; s++)                {                    userIds += GetUserId(str[s].Trim()) + "‘,";                }                userIds = userIds.Substring(0, userIds.Length - 1);                if (string.IsNullOrEmpty(userIds))                {return;                }                SqliteBaseClass sqlite = new SqliteBaseClass(FileName);                try                {                    sqlite.creatDataBase();//创建数据库                    sqlite.SqliteConn = new System.Data.SQLite.SQLiteConnection(sqlite.StrConntion);                    sqlite.SqliteConn.Open();                    //创建表                    sqlite.creatDataBaseTable("CREATE TABLE GpsInfo ([id] CHAR(32),[gpsTime] DATETIME,[Lon] DOUBLE,[Lat] DOUBLE,[speed] DOUBLE,[direction] DOUBLE,[seaLevel] DOUBLE,[uploaded] INT,[TotalLiCheng] nvarchar(50))");                    sqlite.creatDataBaseTable("CREATE TABLE SysParamters ([param] NVARCHAR(50) NOT NULL,[pValue] NVARCHAR(150))");                    sqlite.Strtablename = "SysParamters";                    //插入gps数据                    sqlite.Strtablename = "GpsInfo";                    string fields = "id,gpsTime,lon,lat,speed,direction,sealevel,TotalLiCheng";//字段列表                    string values = string.Empty;//数据列表                    uiProgressBar1.Maximum = dt.Rows.Count;                    for (int i = 0; i < dt.Rows.Count; i++)                    {                        //把数组数据转换为,分割                        string[] strs = dt.Rows[i].ItemArray.Select(w => w.ToString()).ToArray<string>();                        //时间类型存入db时要转换一下,不然读取时报错                        DateTime date = Convert.ToDateTime(dt.Rows[i]["时间"]);                        values = "" + strs[0] + "‘,‘" + date.ToString("s") + "‘,‘" + string.Join("‘,‘", strs, 3, 6) + "";                        sqlite.insertFieldData(fields, values);//插入数据                        uiProgressBar1.Value =http://www.mamicode.com/ i;                        System.Windows.Forms.Application.DoEvents();                    }                }                catch (Exception ex)                {                    throw new Exception(ex.Message);                }                finally                {                    if (sqlite!=null&&sqlite.SqliteConn!=null)                    {                        sqlite.SqliteConn.Close();                    }                }                MsgBoxShow.ShowInformation("导出成功!");            }            catch (Exception ex)            {                MsgBoxShow.ShowWarning("导出错误:" + ex.Message);            }        }

 

2.     DB文件的导入

   // 获取DB数据
        private void GetDBData(object sender, WaitWindowEventArgs e)        {            try            {                if (e.Arguments.Count > 0)                {                    //创建sqlite操作                    SqliteBaseClass sqlite = new SqliteBaseClass(e.Arguments[0].ToString());                    sqlite.SqliteConn = new System.Data.SQLite.SQLiteConnection(sqlite.StrConntion);                    sqlite.SqliteConn.Open();                    //查询格式是否正确                    string strgps = "SELECT id,gpsTime,Lon,Lat,speed,direction,TotalLiCheng,seaLevel FROM GpsInfo Limit 1";                    string strsys = "SELECT param,pValue FROM SysParamters";                    DataSet gpsSet = sqlite.getDataSetQueryContSql(strgps);                    DataSet SysSet = sqlite.getDataSetQueryContSql(strsys);                    if (gpsSet == null || SysSet == null || gpsSet.Tables[0].Rows.Count <= 0)                    {                        MsgBoxShow.ShowInformation("DB文件格式错误或者不存在数据");                        return;                    }                    //获取数据                    string strGpsInfo = "SELECT id as 巡护人员,gpsTime as 时间,Lon as 经度,Lat as 纬度,speed as 速度,direction as 方向,"                        + " TotalLiCheng as 总里程,seaLevel as 海拔 FROM GpsInfo  ORDER BY gpsTime";                    DataTable GpsInfoDT = sqlite.getDataSetQueryContSql(strGpsInfo).Tables[0];                    //计算总里程                    e.Result = CalculateTotalLiCheng(GpsInfoDT);                }            }            catch (Exception ex)            {                MsgBoxShow.ShowWarning("打开DB文件错误:" + ex.Message);            }        }

C# 实现DB文件的导入导出功能