天天看點

如何把DataTable内的資料插入到資料庫中

通過代碼把DataTable資料庫Insert到資料庫中,代碼如下:

        /// <summary>

        /// DataTable内的資料插入到資料庫

        /// </summary>

        /// <param name="tableName">表名</param>

        /// <param name="sourceFields">DataTable内的字段名</param>

        /// <param name="targetFields">目标表的字段名</param>

        /// <param name="dataSource">要插入的資料</param>

        /// <returns>ture(成功)、false(失敗)</returns>

        public static SystemMessage InsertData(OracleConnection conn,OracleTransaction trans, string tableName, string[] sourceFields, string[] targetFields, DataTable dataSource)

        {

            SystemMessage _msg = new SystemMessage(true);

            string sql = "insert into " + tableName + "({0}) values({1})";

            StringBuilder fields = new StringBuilder();

            StringBuilder values = new StringBuilder();

            int count = sourceFields.Length;

            for (int i = 0; i < count; i++)

            {

                fields.Append(targetFields[i]);

                values.Append(sourceFields[i]);

                if (i != count - 1)

                {

                    fields.Append(",");

                    values.Append(",");

                }

            }

            sql = sql.Replace("{0}", fields.ToString());

            values = values.Replace(",", ",:");

            sql = sql.Replace("{1}", ":" + values.ToString());

            try

            {

                foreach (DataRow dr in dataSource.Rows)

                {

                    OracleCommand cmdOracle = new OracleCommand(sql, conn);

                    cmdOracle.Transaction = trans;

                    cmdOracle.CommandType = CommandType.Text;

                    OracleParameter prm = null;

                    foreach (string columnName in sourceFields)

                    {

                        prm = new OracleParameter(columnName, dr[columnName]);

                        cmdOracle.Parameters.Add(prm);

                    }

                    cmdOracle.ExecuteNonQuery();

                }

            }

            catch (Exception e)

            {

                _msg.Message = tableName + "表資料插入失敗:" + e.Message;

                _msg.Success = false;

            }

            finally

            {

                conn.Close();

                conn.Dispose();

            }

            return _msg;

        }

繼續閱讀