c#中sqlite将datatable复制到另一个数据库中(目的数据库需要先创建表结构)
2023-09-11 14:16:45 时间
datatable到sqlite
1 public class DataTableToSQLte 2 { 3 private string tableName; 4 5 public string TableName 6 { 7 get { return tableName; } 8 set { tableName = value; } 9 } 10 private string insertHead; 11 12 public string InsertHead 13 { 14 get { return insertHead; } 15 } 16 17 private string[] separators; 18 19 public string[] Separators 20 { 21 get { return separators; } 22 set { separators = value; } 23 } 24 25 private string insertCmdText; 26 27 private int colCount; 28 private string[] fields; 29 30 public DataTableToSQLte(DataTable dt) 31 { 32 List<string> myFields = new List<string>(); 33 List<string> mySeparators = new List<string>(); 34 List<string> valueVars = new List<string>();// insert command text 35 colCount = dt.Columns.Count; 36 37 for (int i = 0; i < colCount; i++) 38 { 39 string colName = dt.Columns[i].ColumnName; 40 myFields.Add(colName); 41 mySeparators.Add(GetSeperator(dt.Columns[i].DataType.ToString())); 42 valueVars.Add("@" + colName); 43 } 44 insertHead = string.Format("insert into {0} ({1})" 45 , dt.TableName 46 , string.Join(",", myFields.ToArray())); 47 separators = mySeparators.ToArray(); 48 49 insertCmdText = string.Format("{0} values ({1})", insertHead 50 , string.Join(",", valueVars.ToArray())); 51 52 fields = myFields.ToArray(); 53 54 } 55 56 private string GetSeperator(string typeName) 57 { 58 string result = string.Empty; 59 switch (typeName) 60 { 61 case "System.String": 62 result = "'"; 63 break; 64 65 default: 66 result = typeName; 67 break; 68 } 69 70 return result; 71 } 72 73 74 public string GenInsertSql(DataRow dr) 75 { 76 List<string> strs = new List<string>(); 77 for (int i = 0; i < colCount; i++) 78 { 79 if (DBNull.Value == dr[i]) //null or DBNull 80 strs.Add("null"); 81 else 82 strs.Add(string.Format("{0}{1}{0}", separators[i], dr[i].ToString())); 83 } 84 return string.Format("{0} values ({1})", insertHead, string.Join(",", strs.ToArray())); 85 } 86 87 public void ImportToSqliteBatch(DataTable dt, string dbFullName) 88 { 89 string strConn = string.Format("data source={0}", dbFullName); 90 using (SQLiteConnection conn = new SQLiteConnection(strConn)) 91 { 92 using (SQLiteCommand insertCmd = conn.CreateCommand()) 93 { 94 insertCmd.CommandText = insertCmdText; 95 conn.Open(); 96 SQLiteTransaction tranction = conn.BeginTransaction(); 97 foreach (DataRow dr in dt.Rows) 98 { 99 for (int i = 0; i < colCount; i++) 100 { 101 object o = null; 102 string paraName = "@" + fields[i]; 103 if (DBNull.Value != dr[fields[i]]) 104 o = dr[fields[i]]; 105 insertCmd.Parameters.AddWithValue(paraName, o); 106 } 107 insertCmd.ExecuteNonQuery(); 108 } 109 tranction.Commit(); 110 } 111 } 112 } 113 114 115 private void Example() 116 { 117 string dbName = AppDomain.CurrentDomain.BaseDirectory + "test.db"; 118 DataTable dt = MyCommon.ConvertXmlToDataTable(MyCommon.ReadXmlStringFromFile("Dt1.xml")); 119 DataTableToSQLte myTabInfo = new DataTableToSQLte(dt); 120 myTabInfo.ImportToSqliteBatch(dt, dbName); 121 //MessageBox.Show("Ok!"); 122 123 124 } 125 }
相关文章
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- C#中泛型方法与泛型接口 C#泛型接口 List<IAll> arssr = new List<IAll>(); interface IPerson<T> c# List<接口>小技巧 泛型接口协变逆变的几个问题
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- 【C#】WebMethod的用法,aspx、ashx、asmx
- C#的访问修饰符,声明修饰符,关键字有哪些?扫盲篇
- C#【必备技能篇】委托Action、 Action<T>、Func<T>、Predicate<T>(精简易懂,赞!)
- C#,初学琼林(01)——绝对值(Absolute Value)计算的源代码进化过程及编程的基本范式
- C#中控件如何设置透明色
- c#中将HTML文件转换成PDF文件
- [C#] Direct2D 学习笔记 (一)vb.net转换为c#
- sqlite中SQLite查看所有表名及字段名,及判断是否存在的方法
- c#操作SQLite, 判断表、字段是否存在,新增、删除、重命名列实例
- C#里面SQLite读取数据的操作
- 在C#项目中使用SQLite(环境安装问题)
- C# SQLite 数据库操作实例2
- C#操作SQLite数据库增、删、改、查 实例
- SQLite的sqlite_sequence表
- 【Sqlite】C#不同支持
- C#/Sqlite-单机Window 程序 sqlite 数据库实现
- C#-执行cmd命令,获取结果
- C# winForm 多条件模糊查询实现(主要讲思路,请忽略与数据库(sqlite)相关的代码)
- C#-点击关闭按钮时不关闭窗体,而是隐藏窗体
- 推荐一些C#相关的网站、资源和书籍