在这里设计了Insert结构用以储存字段和值的关系(曾考虑过用数组的办法实现,可是那玩意不太方便调用,瞅着挺抽象的,不太好用,如果有更好的建议,欢迎留言~) 复制代码 代码如下: /// <summary> /// Use to format Insert column"s value /// </summary> public struct InsertBag { public string ColumnName; public string Value; public InsertBag(string Column, string value) { ColumnName = Column; Value = value; } }
以下为插入模块的主函数: 复制代码 代码如下: /// <summary> /// Insert Data /// </summary> /// <param name="DataSource"></param> /// <param name="TargetTable"></param> /// <param name="InsertBags">struck of InsertBag</param> /// <returns></returns> public static bool Insert(string DataSource, string TargetTable, List<InsertBag> InsertBags) { try { using (DbConnection conn = SQLiteFactory.Instance.CreateConnection()) { //Connect Database conn.ConnectionString = "Data Source=" + DataSource; conn.Open(); //Deal InsertBags StringBuilder ColumnS = new StringBuilder(); StringBuilder ValueS = new StringBuilder(); for (int i = 0; i < InsertBags.Count; i++) { ColumnS.Append(InsertBags[i].ColumnName + ","); ValueS.Append(""" + InsertBags[i].Value + "","); } if (InsertBags.Count == 0) { throw new Exception("InsertBag 数据包为空,睁大你的狗眼……"); } else { //Drop the last "," from the ColumnS and ValueS ColumnS = ColumnS.Remove(ColumnS.Length - 1, 1); ValueS = ValueS.Remove(ValueS.Length - 1, 1); } //Insert DbCommand cmd = conn.CreateCommand(); cmd.CommandText = "insert into [" + TargetTable + "] (" + ColumnS.ToString() + ") values (" + ValueS.ToString() + ")"; cmd.ExecuteNonQuery(); return true; } } catch (Exception E) { MessageBox.Show(E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return false; } }