SqlDb_.cs 与 csharp_SqlDb.h

SqlDb_.cs

/*****************************************************************************
创建时间           :2006年12月19日

文件名             :SqlDb_.cs

文件名             :微软数据库

作者               :李锋

Email              :runzhilf@139.com  

联系电话           :13828778863,25722732


AdKeyPrimary 关键字是主关键字。 
AdKeyForeign 关键字是外部关键字。 
AdKeyUnique 关键字是唯一的。 

 需要添加的引用:

(1)Microsoft SQLDMO Object Library
             
(2)Microsoft ADO Ext. 6.0 for DDL and Security
  
(3)Microsoft ActiveX Data Objects 2.8 Library
 
  -------------------最后一次修改时间:2016年11月22日
 
 *******************************************************************************/
#if _WINDOWS_PLATFORM_

using System;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
 

namespace lf
{
    /// <summary>
    /// 用于访问SQLServer数据库的类
    /// </summary> 
    public class SqlDb_ : Db_
    {
        private string m_dbName;
        private string m_userName;
        private string m_userPassword;
        private string m_dbSqource;

        public SqlConnection m_connection;
        public SqlConnection m_connection_query;
        public SqlConnection m_connection_view;
        public SqlDataAdapter m_adapter_query;
        public SqlDataAdapter m_adapter_view;


        /// <summary>
        /// 执行特定的SQL内容
        /// </summary>
        /// <param name="sCaptionName">标题名</param>
        /// <param name="sCheckTableName">需要检查的表名</param>
        /// <returns></returns>
        public override bool exec_dict_sql_content(string sCaptionName, string sCheckTableName)
        {
            DataTable dt1, dt2;
            if (sCheckTableName == "")
            {
                dt1 = ExecSQLQuery("SELECT [name] FROM sysobjects WHERE  [name] = N\'" +
                    sCaptionName + "\' AND type = \'U\'");
            }
            else
            {
                dt1 = ExecSQLQuery("SELECT [name] FROM sysobjects WHERE  [name] = N\'" +
                    sCheckTableName + "\' AND type = \'U\'");
            }

            if (dt1.Rows.Count == 0)
            {
                dt2 = LDB_Global.db_repository.ExecSQLQuery("SELECT fd_content FROM dict_sql " +
                   " WHERE fd_caption =\'" + sCaptionName + "\'");
                if (dt2.Rows.Count > 0)
                {
                    string ssql = dt2.Rows[0]["fd_content"].ToString();
                    if (ssql.Trim().Length == 0)
                    {
                        throw new Exception("sql内容不能为空!");
                    }
                    ExecSQLText(ssql.Replace("co_example", database_name));
                    return true;
                }
            }
            return false;
        }


        //-----------------------------------------------------------------------属性

        /// <summary>
        /// 数据库名子
        /// </summary>
        public override string database_name
        {
            get
            {
                return m_dbName;
            }
        }


        /// <summary>
        /// 数据库用户
        /// </summary>
        public override string user_name
        {
            get
            {
                return m_userName;
            }
        }


        /// <summary>
        ///  数据库密码
        /// </summary>
        public override string user_password
        {
            get
            {
                return m_userPassword;
            }
        }


        /// <summary>
        ///  提供数据源的数据服务器名
        /// </summary>
        public override string database_source
        {
            get
            {
                return m_dbSqource;
            }
        }


        /// <summary>
        /// 创建个人信息表
        /// </summary>
        /// <returns></returns>
        public override bool create_crm_natural_person()
        {
            return exec_dict_sql_content("crm_natural_person", "");
        }


        /// <summary>
        /// 创建公司信息表
        /// </summary>
        /// <returns></returns>
        public override bool create_crm_company()
        {
            return exec_dict_sql_content("crm_company", "");
        }

        /// <summary>
        /// 创建员工信息表
        /// </summary>
        /// <returns></returns>
        public override bool create_crm_employee()
        {

            return exec_dict_sql_content("crm_employee", "");
        }



        /// <summary>
        /// 创建角色表crm_role,登陆成员表crm_login_member,在线成员表crm_online_member,成员登陆信息表crm_login_info      
        /// </summary>
        /// 创建时间: 2021-10-03      最后一次修改时间:2021-10-03
        /// <returns></returns>
        public override bool create_crm_rote()
        { 
            return exec_dict_sql_content("crm_rote", "");
        }




        /// <summary>
        /// 创建个人通信录视图
        /// </summary>
        /// <returns></returns>
        public override bool create_pro_crm_np_AddressBook_view()
        {
            return exec_dict_sql_content("pro_crm_np_AddressBook_view", "");
        }

        /// <summary>
        /// 创建关系信息表
        /// </summary>
        /// <returns></returns>
        public override bool create_crm_relation()
        {
            return exec_dict_sql_content("crm_relation", "");
        }



        /// <summary>
        /// 创建银行帐户
        /// </summary>
        /// <returns></returns>
        public override bool create_fc_bank()
        {
            return exec_dict_sql_content("fc_bank", "");
        }



        /// <summary>
        /// 创建审批流表
        /// </summary>
        /// <returns></returns>
        public override bool create_co_approval_flow()
        {

            return exec_dict_sql_content("co_approval_flow", "");
        }


        /// <summary>
        /// 创建个人相关模块
        /// </summary>
        /// <returns></returns>
        public override bool create_个人相关()
        {
            return exec_dict_sql_content("个人相关", "");
        }


        /// <summary>
        /// 资产管理 ------------------------商品表
        /// </summary>
        /// <returns></returns>
        public override bool create_dict_merchandise()
        {
            return exec_dict_sql_content("dict_merchandise", "");
        }


        /// <summary>
        /// 资产管理 ------------------------资产管理
        /// </summary>
        /// <returns></returns>
        public override bool create_资产管理()
        {
            return exec_dict_sql_content("资产管理", "");
        }



        /// <summary>
        /// 资产视图
        /// </summary>
        /// <returns></returns>
        public override bool create_pro_assets_view()
        {
            return exec_dict_sql_content("pro_assets_view", "");

        }

        /// <summary>
        /// ------------------------------------------------------------------------------创建合同管理模块
        /// </summary>
        /// <returns></returns>
        public override bool create_crm_contract()
        {
            return exec_dict_sql_content("crm_contract", "");
        }


        /// <summary>
        /// 资产分类视图
        /// </summary>
        /// <returns></returns>
        public override bool create_pro_assets_class_view()
        {
            return exec_dict_sql_content("pro_assets_class_view", "");
        }


        /// <summary>
        /// 创建项目信息表
        /// </summary>
        /// <returns></returns>
        public override bool create_crm_project()
        {

            return exec_dict_sql_content("crm_project", "");
        }


        /// <summary>
        /// 创建每天支出记录
        /// </summary>
        /// <returns></returns>
        public override bool create_co_payout()
        {
            return exec_dict_sql_content("co_payout", "");
        }

        /// <summary>
        /// 创建每天支出记录的触发器
        /// </summary>
        /// <returns></returns>
        public override bool create_co_payout_trigger()
        {
            DataTable dt1, dt2;
            dt1 = ExecSQLQuery("SELECT OBJECT_ID (\'Update_co_payout\', \'TR\')  Update_co_payout");

            if (dt1.Rows.Count > 0)
            {
                if (dt1.Rows[0]["Update_co_payout"] == DBNull.Value)
                {
                    dt2 = LDB_Global.db_repository.ExecSQLQuery("SELECT fd_content FROM crm_sql " +
                 " WHERE fd_caption =\'co_payout_trigger\'");
                    if (dt2.Rows.Count > 0)
                    {
                        string ssql = dt2.Rows[0]["fd_content"].ToString();
                        ExecSQLText(ssql.Replace("co_sample", database_name));
                        return true;
                    }
                }
            }
            return false;
        }

        /// <summary>
        /// 如果系统表不存在,则自动创建
        /// </summary>
        /// <returns></returns>
        public override bool create_System()
        {
            return exec_dict_sql_content("System", "");
        }


        /// <summary>
        /// 创建登陆信息表
        /// </summary>
        /// <returns></returns>
        public override bool create_co_login_info()
        {
            DataTable dt1, dt2;
            dt1 = ExecSQLQuery("SELECT [name] FROM sysobjects WHERE  [name] = N\'co_login_info\' AND type = \'U\'");

            if (dt1.Rows.Count == 0)
            {
                dt2 = LDB_Global.db_repository.ExecSQLQuery("SELECT fd_content FROM crm_sql " +
                   " WHERE fd_caption =\'co_login_info\'");
                if (dt2.Rows.Count > 0)
                {
                    string ssql = dt2.Rows[0]["fd_content"].ToString();
                    ExecSQLText(ssql.Replace("co_sample", database_name));
                    return true;
                }
            }
            return false;
        }

        public override bool create_co_runtime_parameter()
        {
            return exec_dict_sql_content("co_runtime_parameter", "");
        }

        public override bool create_co_runtime_user()
        {
            return exec_dict_sql_content("co_runtime_user", "");
        }

        /// <summary>
        /// 创建现金记录
        /// </summary>
        /// <returns></returns>
        public override bool create_co_cash()
        {
            return exec_dict_sql_content("co_cash", "");
        }


        /// <summary>
        /// 创建定价表
        /// </summary>
        /// <returns></returns>
        public override bool create_co_pricing_of_product()
        {
            return exec_dict_sql_content("co_pricing_of_product", "");
        }




        //-----------------------------------------------------------------------重写

        /// <summary>
        /// 直接运行SQL文本,先要添加sqldmo COM组件       COM 引用 "Microsoft  SQLDMO Object Library"
        /// </summary>
        /// <param name="sText"></param>
        public override bool ExecSQLText(string sText)
        {
            return smo.ExecSQLText(sText, this);
        }


        /// <summary>
        /// 直接执行SQL文件。 
        /// </summary>
        /// <param name="sFileName">文件名</param>
        /// <returns></returns>
        public override bool ExecSQLFile(string sFileName)
        {
            System.IO.StreamReader si = new System.IO.StreamReader(sFileName);

            if (si == null)
                return false;

            string ssql = si.ReadToEnd();
            si.Close();
            return ExecSQLText(ssql);
        }
        


        
        
        public override  DbConnection GetConnection()
        {
            return m_connection;

        }



    public override DbDataAdapter GetViewDbDataAdapter()
    {
        return m_adapter_view;
    }


    public override int ExecNonSQL(string sSQL)
    {
#if _LF_DEBUG_
            LDB_Global.s_ExecNonSQL += sSQL;
            LDB_Global.s_ExecNonSQL += "\r\n";
#endif
        if (sSQL.Trim().Length == 0)
        {
            lg.ShowInfo("错误:传递的参数sSQL不能为空字符串!");
            return 0;
        }
        
        //lg.ShowDialogText(sSQL);

        SqlConnection oConn = new SqlConnection(m_connection.ConnectionString);
        SqlCommand oComm = new SqlCommand(sSQL, oConn);
        oComm.Connection.Open();
        int n = oComm.ExecuteNonQuery();
        oComm.Dispose();
        oConn.Close();
        oConn.Dispose();
        return n;
    }


        /// <summary>
        /// 在路径sPath下创建一个数据库。
        /// </summary>
        /// <param name="sDatabaseName">数据库名</param>
        /// <param name="sPath">路径名</param>
        /// 创建时间:????-??-??  最后一次修改时间:2020-04-03
        /// <returns>如果成功,则返回空字符串,失败返回错误原因。</returns>
        public override string CreateDatabase(string sDatabaseName, string sPath = "")
        {            
            String sTruePath;

            if (sPath.Trim().Length == 0)
                sTruePath = LDB_Global.sqlserver_db_path;
            else
                sTruePath = sPath;


            SqlDb_ db = new SqlDb_("master", m_userName, m_userPassword, m_dbSqource);

            string ssql = "SELECT * FROM master..sysdatabases WHERE [name]=\'" + sDatabaseName + "\'";

            DataTable dt = db.ExecSQLQuery(ssql);

            if (dt.Rows.Count > 0)
            {
                return sDatabaseName + "数据库已存在!";
            }

            ssql = "use  master " + "\n";
            ssql += "IF NOT EXISTS(SELECT * FROM master..sysdatabases WHERE [name] = \'" +
                sDatabaseName + "\')" + " \n";
            ssql += "BEGIN	 " + " \n";
            ssql += "CREATE DATABASE [" + sDatabaseName + "] \n";
            ssql += "ON " + " \n";
            ssql += "(NAME = [" + sDatabaseName + "_data], " + " \n";
            ssql += " FILENAME = \'" + sTruePath + sDatabaseName + "_Data.mdf')" + " \n";
            ssql += "LOG ON " + " \n";
            ssql += "(NAME = [" + sDatabaseName + "_log], " + " \n";
            ssql += "FILENAME = \'" + sTruePath + sDatabaseName + "_Log.ldf') " + "\n";
            ssql += "END " + "\n";

            db.ExecNonSQL(ssql);

            ssql = "SELECT * FROM master..sysdatabases WHERE name=\'" + sDatabaseName + "\'";


            dt = db.ExecSQLQuery(ssql);

            if(dt.Rows.Count > 0)
            {
                return "";
            }            
            else
            {
                return "无法创建数据库" + sDatabaseName +",未知原因!";
            }
        }



        public SqlDb_(string sDBName, string sUserName, string sPwd, string sServer) : base(DataFormat_.dfSQLServer)
        {

            m_dbName = sDBName;
            m_userName = sUserName;
            m_userPassword = sPwd;
            m_dbSqource = sServer;

            string cs = "server=" + sServer + ";uid=" + sUserName + ";pwd=" + sPwd + ";database=" + sDBName;
             
            m_connection = new SqlConnection();
            m_connection.ConnectionString = cs;

            m_connection_query = new SqlConnection();
            m_connection_query.ConnectionString = cs;
            m_adapter_query = new SqlDataAdapter("", m_connection_query);
            

            m_connection_view = new SqlConnection();
            m_connection_view.ConnectionString = cs;
            m_adapter_view = new SqlDataAdapter("", m_connection_view);

        }
         
        

    }//---------------------------------------------------------------l-SqlDb_

}//-------------------------------------------------------------------------------------lf

#endif//---------------------------------------------------------------------------------------_WINDOWS_PLATFORM_

 csharp_SqlDb.h

/*****************************************************************************
  创建时间          :  2006年12月19日

  文件名            : csharp_SqlDb.h 翻译来自C#写的类(凡是后面带_csharp都是翻译自C#写的类)

  作者              : 李锋

  Email            :   ruizhilf@139.com

  联系电话          :  13828778863,25722732

   ----------------------最后一次修改时间:2020年05月09日

 *******************************************************************************/
#pragma once
///

#include "csharp_db.h"
 

 
_LF_BEGIN_

ref class csharp_SqlDb : csharp_db
{
public:
    SqlConnection^ m_connection;
    SqlConnection^ m_connection_query;
    SqlConnection^ m_connection_view;
    SqlDataAdapter^ m_adapter_query;
    SqlDataAdapter^ m_adapter_view;

    /// <summary>
    /// 执行特定的SQL内容
    /// </summary>
    /// <param name="sCaptionName">标题名</param>
    /// <param name="sCheckTableName">需要检查的表名</param>
    /// <returns></returns>
    bool exec_dict_sql_content(String^ sCaptionName, String^ sCheckTableName) override;


    //-----------------------------------------------------------------------属性

 
    /// <summary>
    /// 创建个人信息表
    /// </summary>
    /// <returns></returns>
    bool create_crm_natural_person() override;

    /// <summary>
    /// 创建公司信息表
    /// </summary>
    /// <returns></returns>
    bool create_crm_company() override;
   

    /// <summary>
    /// 创建员工信息表
    /// </summary>
    /// <returns></returns>
    bool create_crm_employee()override;
   

    /// <summary>
    /// 创建角色表csharp_crm_role,登陆成员表crm_login_member,在线成员表crm_online_member,成员登陆信息表crm_login_info      
    /// </summary>
    /// 创建时间: 2021-10-03      最后一次修改时间:2021-10-03
    /// <returns></returns>
    bool create_crm_rote()override;
 


    /// <summary>
    /// 创建个人通信录视图
    /// </summary>
    /// <returns></returns>
    bool create_pro_crm_np_AddressBook_view()override;
   

    /// <summary>
    /// 创建关系信息表
    /// </summary>
    /// <returns></returns>
    bool create_crm_relation()override;


    /// <summary>
    /// 创建银行帐户
    /// </summary>
    /// <returns></returns>
    bool create_fc_bank()override;
 


    /// <summary>
    /// 创建审批流表
    /// </summary>
    /// <returns></returns>
    bool create_co_approval_flow()override;
 


    /// <summary>
    /// 创建个人相关模块
    /// </summary>
    /// <returns></returns>
    bool create_个人相关()override;
  

    /// <summary>
    /// 资产管理 ------------------------商品表
    /// </summary>
    /// <returns></returns>
    bool create_dict_merchandise()override;
  


    /// <summary>
    /// 资产管理 ------------------------资产管理
    /// </summary>
    /// <returns></returns>
    bool create_资产管理()override;
   


    /// <summary>
    /// 资产视图
    /// </summary>
    /// <returns></returns>
    bool create_pro_assets_view()override;
 

    /// <summary>
    /// ------------------------------------------------------------------------------创建合同管理模块
    /// </summary>
    /// <returns></returns>
    bool create_crm_contract()override;
  

    /// <summary>
    /// 资产分类视图
    /// </summary>
    /// <returns></returns>
    bool create_pro_assets_class_view()override;
   

    /// <summary>
    /// 创建项目信息表
    /// </summary>
    /// <returns></returns>
    bool create_crm_project()override;
  

    /// <summary>
    /// 创建每天支出记录
    /// </summary>
    /// <returns></returns>
    bool create_co_payout()override;


    /// <summary>
    /// 创建每天支出记录的触发器
    /// </summary>
    /// <returns></returns>
    bool create_co_payout_trigger()override;

    /// <summary>
    /// 如果系统表不存在,则自动创建
    /// </summary>
    /// <returns></returns>
    bool create_System()override;


    /// <summary>
    /// 创建登陆信息表
    /// </summary>
    /// <returns></returns>
    bool create_co_login_info()override;
   

    bool create_co_runtime_parameter()override;
   

    bool create_co_runtime_user()override;
    

    /// <summary>
    /// 创建现金记录
    /// </summary>
    /// <returns></returns>
    bool create_co_cash()override;
    


    /// <summary>
    /// 创建定价表
    /// </summary>
    /// <returns></returns>
    bool create_co_pricing_of_product()override;
 



    //-----------------------------------------------------------------------重写

    /// <summary>
    /// 直接运行SQL文本,先要添加sqldmo COM组件       COM 引用 "Microsoft  SQLDMO Object Library"
    /// </summary>
    /// <param name="sText"></param>
    bool ExecSQLText(String^ sText)override;
    /// <summary>
    /// 直接执行SQL文件。 
    /// </summary>
    /// <param name="sFileName">文件名</param>
    /// <returns></returns>
    bool ExecSQLFile(String^ sFileName)override;     

    DbConnection^ GetConnection()override;
    DbDataAdapter^ GetViewDbDataAdapter()override;

    int ExecNonSQL(String^ sSQL)override; 


    /// <summary>
    /// 在路径sPath下创建一个数据库。
    /// </summary>
    /// <param name="sDatabaseName">数据库名</param>
    /// <param name="sPath">路径名</param>
    /// 创建时间:????-??-??  最后一次修改时间:2020-04-03
    /// <returns>如果成功,则返回空字符串,失败返回错误原因。</returns>
    String^ CreateDatabase(String^ sDatabaseName, String^ sPath)override;

    csharp_SqlDb(String^ sDBName, String^ sUserName, String^ sPwd, String^ sServer);
        
    
};

_LF_END_

 csharp_SqlDb.cpp

#include "csharp_DB_Global.h"
#include "csharp_smo.h"
#include "csharp_SqlDb.h"

_LF_BEGIN_

bool csharp_SqlDb::exec_dict_sql_content(String^ sCaptionName, String^ sCheckTableName)

{
    DataTable ^dt1, ^dt2;
    if (sCheckTableName == "")
    {

        dt1 = ExecSQLQuery("SELECT [name] FROM sysobjects WHERE  [name] = N\'" +
            sCaptionName + "\' AND type = \'U\'");
    }
    else
    {
        dt1 = ExecSQLQuery("SELECT [name] FROM sysobjects WHERE  [name] = N\'" +
            sCheckTableName + "\' AND type = \'U\'");
    }

    if (dt1->Rows->Count == 0)
    {
        dt2 = csharp_DB_Global::db_repository->ExecSQLQuery("SELECT fd_content FROM dict_sql " +
            " WHERE fd_caption =\'" + sCaptionName + "\'");
        if (dt2->Rows->Count > 0)
        {
            String^ ssql = dt2->Rows[0]["fd_content"]->ToString();
            if (ssql->Trim()->Length == 0)
            {
                throw gcnew Exception("sql内容不能为空!");
            }
            ExecSQLText(ssql->Replace("co_example", database_name));
            return true;
        }
    }
    return false;
}

  
bool csharp_SqlDb::create_crm_natural_person()
{
    return exec_dict_sql_content("crm_natural_person", "");
}

bool csharp_SqlDb::create_crm_company()
{
    return exec_dict_sql_content("crm_company", "");
}

bool csharp_SqlDb::create_crm_employee()
{

    return exec_dict_sql_content("crm_employee", "");
}

bool csharp_SqlDb::create_crm_rote() 
{
    return exec_dict_sql_content("crm_rote", "");
}

bool csharp_SqlDb::create_pro_crm_np_AddressBook_view()
{
    return exec_dict_sql_content("pro_crm_np_AddressBook_view", "");
}

bool csharp_SqlDb::create_crm_relation()
{
    return exec_dict_sql_content("csharp_crm_relation", "");
}

bool csharp_SqlDb::create_fc_bank()
{
    return exec_dict_sql_content("fc_bank", "");
}

bool csharp_SqlDb::create_co_approval_flow()
{

    return exec_dict_sql_content("co_approval_flow", "");
}

bool csharp_SqlDb::create_个人相关()
{
    return exec_dict_sql_content("个人相关", "");
}

bool csharp_SqlDb::create_dict_merchandise()
{
    return exec_dict_sql_content("dict_merchandise", "");
}

bool csharp_SqlDb::create_资产管理()
{
    return exec_dict_sql_content("资产管理", "");
}

bool csharp_SqlDb::create_pro_assets_view()
{
    return exec_dict_sql_content("pro_assets_view", "");

}

bool csharp_SqlDb::create_crm_contract()
{
    return exec_dict_sql_content("crm_contract", "");
}

bool csharp_SqlDb::create_pro_assets_class_view()
{
    return exec_dict_sql_content("pro_assets_class_view", "");
}

bool csharp_SqlDb::create_crm_project()
{

    return exec_dict_sql_content("crm_project", "");
}

bool csharp_SqlDb::create_co_payout()
{
    return exec_dict_sql_content("co_payout", "");
}

bool csharp_SqlDb::create_co_payout_trigger()
{
    DataTable ^dt1, ^ dt2;
    dt1 = ExecSQLQuery("SELECT OBJECT_ID (\'Update_co_payout\', \'TR\')  Update_co_payout");

    if (dt1->Rows->Count > 0)
    {
        if (dt1->Rows[0]["Update_co_payout"] == DBNull::Value)
        {
            dt2 = csharp_DB_Global::db_repository->ExecSQLQuery("SELECT fd_content FROM crm_sql " +
                " WHERE fd_caption =\'co_payout_trigger\'");
            if (dt2->Rows->Count > 0)
            {
                String^ ssql = dt2->Rows[0]["fd_content"]->ToString();
                ExecSQLText(ssql->Replace("co_sample", database_name));
                return true;
            }
        }
    }
    return false;
}

bool csharp_SqlDb::create_System()
{
    return exec_dict_sql_content("System", "");
}

bool csharp_SqlDb::create_co_login_info()
{
    DataTable ^dt1, ^dt2;
    dt1 = ExecSQLQuery("SELECT [name] FROM sysobjects WHERE  [name] = N\'co_login_info\' AND type = \'U\'");

    if (dt1->Rows->Count == 0)
    {
        dt2 = csharp_DB_Global::db_repository->ExecSQLQuery("SELECT fd_content FROM crm_sql " +
            " WHERE fd_caption =\'co_login_info\'");
        if (dt2->Rows->Count > 0)
        {
            String^ ssql = dt2->Rows[0]["fd_content"]->ToString();
            ExecSQLText(ssql->Replace("co_sample", database_name));
            return true;
        }
    }
    return false;
}

bool csharp_SqlDb::create_co_runtime_parameter()
{
    return exec_dict_sql_content("co_runtime_parameter", "");
}

bool csharp_SqlDb::create_co_runtime_user()
{
    return exec_dict_sql_content("co_runtime_user", "");
}
bool csharp_SqlDb::create_co_cash()
{
    return exec_dict_sql_content("co_cash", "");
}

bool csharp_SqlDb::create_co_pricing_of_product()
{
    return exec_dict_sql_content("co_pricing_of_product", "");
}

bool csharp_SqlDb::ExecSQLText(String^ sText)
{
    return smo::ExecSQLText(sText, this);
}

bool csharp_SqlDb::ExecSQLFile(String^ sFileName)
{
    System::IO::StreamReader^ si = gcnew System::IO::StreamReader(sFileName);

    if (si == null)
        return false;

    String^ ssql = si->ReadToEnd();
    si->Close();
    return ExecSQLText(ssql);
}

DbConnection^ csharp_SqlDb::GetConnection()
{
    return m_connection;

}

DbDataAdapter^ csharp_SqlDb::GetViewDbDataAdapter()
{
    return m_adapter_view;
}

int csharp_SqlDb::ExecNonSQL(String^ sSQL)
{
#if _LF_DEBUG_
    csharp_DB_Global::s_ExecNonSQL += sSQL;
    csharp_DB_Global::s_ExecNonSQL += "\r\n";
#endif
    if (sSQL->Trim()->Length == 0)
    {
        gce::ShowInfo("错误:传递的参数sSQL不能为空字符串!");
        return 0;
    }

    //gce::ShowDialogText(sSQL);

    SqlConnection^ oConn = gcnew SqlConnection(m_connection->ConnectionString);
    SqlCommand^ oComm = gcnew SqlCommand(sSQL, oConn);
    oComm->Connection->Open();
    int n = oComm->ExecuteNonQuery();
    //oComm->Dispose();
    oComm->Clone();
    oConn->Close();
    //oConn->Dispose();
    return n;
}

String^ csharp_SqlDb::CreateDatabase(String^ sDatabaseName, String^ sPath)
{
    String^ sTruePath;

    if (sPath->Trim()->Length == 0)
        sTruePath = csharp_DB_Global::sqlserver_db_path;
    else
        sTruePath = sPath;


    csharp_SqlDb^ db = gcnew csharp_SqlDb("master", this->database_name,this->user_password,this->database_source);

    String^ ssql = "SELECT * FROM master..sysdatabases WHERE [name]=\'" + sDatabaseName + "\'";

    DataTable ^dt = db->ExecSQLQuery(ssql);

    if (dt->Rows->Count > 0)
    {
        return sDatabaseName + "数据库已存在!";
    }

    ssql = "use  master " + "\n";
    ssql += "IF NOT EXISTS(SELECT * FROM master..sysdatabases WHERE [name] = \'" +
        sDatabaseName + "\')" + " \n";
    ssql += "BEGIN	 " + " \n";
    ssql += "CREATE DATABASE [" + sDatabaseName + "] \n";
    ssql += "ON " + " \n";
    ssql += "(NAME = [" + sDatabaseName + "_data], " + " \n";
    ssql += " FILENAME = \'" + sTruePath + sDatabaseName + "_Data.mdf')" + " \n";
    ssql += "LOG ON " + " \n";
    ssql += "(NAME = [" + sDatabaseName + "_log], " + " \n";
    ssql += "FILENAME = \'" + sTruePath + sDatabaseName + "_Log.ldf') " + "\n";
    ssql += "END " + "\n";

    db->ExecNonSQL(ssql);

    ssql = "SELECT * FROM master..sysdatabases WHERE name=\'" + sDatabaseName + "\'";


    dt = db->ExecSQLQuery(ssql);

    if (dt->Rows->Count > 0)
    {
        return "";
    }
    else
    {
        return "无法创建数据库" + sDatabaseName + ",未知原因!";
    }
}

csharp_SqlDb::csharp_SqlDb(String^ sDBName, String^ sUserName, String^ sPwd, String^ sServer)
    : csharp_db(csharp_DataFormat::dfSQLServer)
{
    
    this->database_name = sDBName;
    this->user_name = sUserName;
    this->user_password = sPwd;
    this->database_source = sServer;

    String^ cs = "server=" + sServer + ";uid=" + sUserName + ";pwd=" + sPwd + ";database=" + sDBName;

    m_connection = gcnew SqlConnection();
    m_connection->ConnectionString = cs;

    m_connection_query = gcnew SqlConnection();
    m_connection_query->ConnectionString = cs;
    m_adapter_query = gcnew SqlDataAdapter("", m_connection_query);


    m_connection_view = gcnew SqlConnection();
    m_connection_view->ConnectionString = cs;
    m_adapter_view = gcnew SqlDataAdapter("", m_connection_view);

}







_LF_END_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值