datatable写入sqlite

    public class DataTableToSQLte
    {
        private string tableName;

        public string TableName
        {
            get { return tableName; }
            set { tableName = value; }
        }
        private string insertHead;

        public string InsertHead
        {
            get { return insertHead; }
        }

        private string[] separators;

        public string[] Separators
        {
            get { return separators; }
            set { separators = value; }
        }

        private string insertCmdText;

        private int colCount;
        private string[] fields;

        public DataTableToSQLte(DataTable dt)
        {
            List<string> myFields = new List<string>();
            List<string> mySeparators = new List<string>();
            List<string> valueVars = new List<string>();// insert command text
            colCount = dt.Columns.Count;

            for (int i = 0; i < colCount; i++)
            {
                string colName = dt.Columns[i].ColumnName;
                myFields.Add(colName);
                mySeparators.Add(GetSeperator(dt.Columns[i].DataType.ToString()));
                valueVars.Add("@" + colName);
            }
            insertHead = string.Format("insert into {0} ({1})"
                , dt.TableName
                , string.Join(",", myFields.ToArray()));
            separators = mySeparators.ToArray();

            insertCmdText = string.Format("{0} values ({1})", insertHead
                , string.Join(",", valueVars.ToArray()));

            fields = myFields.ToArray();

        }

        private string GetSeperator(string typeName)
        {
            string result = string.Empty;
            switch (typeName)
            {
                case "System.String":
                    result = "'";
                    break;

                default:
                    result = typeName;
                    break;
            }

            return result;
        }


        public string GenInsertSql(DataRow dr)
        {
            List<string> strs = new List<string>();
            for (int i = 0; i < colCount; i++)
            {
                if (DBNull.Value == dr[i])  //null or DBNull
                    strs.Add("null");
                else
                    strs.Add(string.Format("{0}{1}{0}", separators[i], dr[i].ToString()));
            }
            return string.Format("{0} values ({1})", insertHead, string.Join(",", strs.ToArray()));
        }

        public void ImportToSqliteBatch(DataTable dt, string dbFullName)
        {
            string strConn = string.Format("data source={0}", dbFullName);
            using (SQLiteConnection conn = new SQLiteConnection(strConn))
            {
                using (SQLiteCommand insertCmd = conn.CreateCommand())
                {
                    insertCmd.CommandText = insertCmdText;
                    conn.Open();
                    SQLiteTransaction tranction = conn.BeginTransaction();
                    foreach (DataRow dr in dt.Rows)
                    {
                        for (int i = 0; i < colCount; i++)
                        {
                            object o = null;
                            string paraName = "@" + fields[i];
                            if (DBNull.Value != dr[fields[i]])
                                o = dr[fields[i]];
                            insertCmd.Parameters.AddWithValue(paraName, o);
                        }
                        insertCmd.ExecuteNonQuery();
                    }
                    tranction.Commit();
                }
            }
        }


        private void Example()
        {
            string dbName = AppDomain.CurrentDomain.BaseDirectory + "test.db";
            DataTable dt = MyCommon.ConvertXmlToDataTable(MyCommon.ReadXmlStringFromFile("Dt1.xml"));
            DataTableToSQLte myTabInfo = new DataTableToSQLte(dt);
            myTabInfo.ImportToSqliteBatch(dt, dbName);
            //MessageBox.Show("Ok!");


        }
    }

 

在C#中,可以使用DataTable来将数据写入到mdb文件中。根据引用\[1\]和引用\[2\]的内容,可以使用以下代码来实现: ```csharp using System.Data; using System.Data.OleDb; // 创建一个DataTable对象,假设为dt DataTable dt = new DataTable(); // 假设已经将数据填充到dt中 // 定义连接字符串,假设为connStr string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=path\\to\\your\\mdbfile.mdb"; // 创建OleDbConnection对象 using (OleDbConnection conn = new OleDbConnection(connStr)) { // 打开连接 conn.Open(); // 创建OleDbDataAdapter对象 using (OleDbDataAdapter adapter = new OleDbDataAdapter()) { // 设置adapter的连接对象和要执行的SQL语句 adapter.SelectCommand = new OleDbCommand("SELECT * FROM YourTableName", conn); // 创建OleDbCommandBuilder对象,用于自动生成插入、更新和删除的SQL语句 OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); // 将DataTable中的数据写入到mdb文件中 adapter.Update(dt); // 关闭连接 conn.Close(); } } ``` 以上代码使用了OleDbConnection和OleDbDataAdapter来连接和操作mdb文件,通过adapter.Update(dt)将DataTable中的数据写入到mdb文件中。请注意替换connStr为你自己的连接字符串,以及YourTableName为你要写入数据的表名。 #### 引用[.reference_title] - *1* *2* [C#将excel数据导入mdb的三种方法(针对5万条数据)](https://blog.csdn.net/linnge/article/details/119328600)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [详解C#把DataTable数据一次插入数据库的方法](https://blog.csdn.net/weixin_28802499/article/details/113266025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值