您的位置:首页 > 编程语言 > C#

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

2014-11-04 10:30 357 查看
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 = 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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐