/// <summary>
        /// Writes the link information.
        /// </summary>
        /// <param name="statement">
        /// The statement.
        /// </param>
        /// <param name="linkInfo">
        /// The link information.
        /// </param>
        /// <param name="linkFieldStatement">
        /// The link field statement.
        /// </param>
        /// <returns>
        /// The <see cref="int"/>.
        /// </returns>
        public int WriteLinkInfo(DatabaseStatement statement, LinkInfo linkInfo, DatabaseStatement linkFieldStatement)
        {
            if (statement == null)
            {
                return(0);
            }

            try
            {
                statement.Reset();
                statement.Bind(1, linkInfo.InfoAreaId);
                statement.Bind(2, linkInfo.TargetInfoAreaId);
                statement.Bind(3, linkInfo.LinkId);
                statement.Bind(4, linkInfo.RelationType);
                statement.Bind(5, linkInfo.ReverseLinkId);
                statement.Bind(6, linkInfo.SourceFieldId);
                statement.Bind(7, linkInfo.DestFieldId);
                statement.Bind(8, linkInfo.LinkFlag);

                statement.ExecuteNonQuery();

                var linkFieldCount = linkInfo.LinkFieldCount;
                for (var i = 0; i < linkFieldCount; i++)
                {
                    linkFieldStatement.Reset();
                    linkFieldStatement.Bind(1, linkInfo.InfoAreaId);
                    linkFieldStatement.Bind(2, linkInfo.TargetInfoAreaId);
                    linkFieldStatement.Bind(3, linkInfo.LinkId);
                    linkFieldStatement.Bind(4, i);
                    linkFieldStatement.Bind(5, linkInfo.GetSourceFieldIdWithIndex(i));
                    linkFieldStatement.Bind(6, linkInfo.GetDestinationFieldIdWithIndex(i));
                    linkFieldStatement.Bind(7, linkInfo.GetSourceValueWithIndex(i));
                    linkFieldStatement.Bind(8, linkInfo.GetDestinationValueWithIndex(i));
                    linkFieldStatement.ExecuteNonQuery();
                }

                return(0);
            }
            catch (Exception)
            {
                return(1);
            }
        }