com_base.asmx.cs

来自「ASP.NET的一些开发实例,有论坛管理系统等」· CS 代码 · 共 478 行

CS
478
字号
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.IO;
using System.Xml;
using System.Data.SqlClient;

namespace ERPWebService.sysbase
{
	/// <summary>
	/// COM_BASE 的摘要说明。
	/// </summary>
	public class COM_BASE : System.Web.Services.WebService
	{
		protected WhiteForumServer.BdStudioSoft.Gfunction Gfunction=new WhiteForumServer.BdStudioSoft.Gfunction();
		protected SqlConnection SqlConn;
		protected SqlDataAdapter SqlAD;

		public COM_BASE()
		{
			//CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的
			InitializeComponent();
		}

		#region Component Designer generated code
		
		//Web 服务设计器所必需的
		private IContainer components = null;
				
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.SqlConn=new SqlConnection((string)Application["db_connstring"]);
		}

		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if(disposing && components != null)
			{
				components.Dispose();
			}
			base.Dispose(disposing);		
		}
		
		#endregion

		// WEB 服务示例
		// HelloWorld() 示例服务返回字符串 Hello World
		// 若要生成,请取消注释下列行,然后保存并生成项目
		// 若要测试此 Web 服务,请按 F5 键

		//		[WebMethod]
		//		public string HelloWorld()
		//		{
		//			return "Hello World";
		//		}
		/// <summary>
		/// 查询符合条件的记录
		/// </summary>
		[WebMethod]
		public DataSet Query(ref SqlCommand mySqlCommand,ref SqlConnection myConn,ref SqlTransaction myTrans,ref string str_Sql)
		{
			DataSet ds =new DataSet();
			try
			{
				mySqlCommand.CommandText = str_Sql;
				//mySqlCommand.ExecuteNonQuery();
				SqlDataAdapter sqlAD = new SqlDataAdapter(mySqlCommand);
				sqlAD.Fill(ds);
			}
			catch (SqlException e)
			{
				myTrans.Rollback();
				myConn.Close();
				return ds;
			}
			return ds;
		}

		[WebMethod]
		public DataSet CreateDataSetFromSql(string str_Sql)
		{
			DataSet ds = new DataSet();
			try 
			{
				SqlAD = new SqlDataAdapter(str_Sql,SqlConn);
				SqlAD.Fill(ds);
			}
			catch(SqlException e)
			{
				string str_Err = e.Message.ToString();
			}
			return ds;
		}

		
		[WebMethod]
		public string CreateSql(string[] str_FieldValue,string[] str_FieldName,string str_SearchType,string[] str_FieldType)
		{
			string str_Sql = string.Empty;
			if (str_FieldValue != null)
			{
				for (int i=0;i<str_FieldValue.Length;i++)
				{
					switch (str_FieldType[i])
					{
						case "string":
							str_Sql = this.CreateSql(str_FieldValue,str_SearchType,str_FieldName);
							break;
						case "int":
							str_Sql = this.CreateSql(str_FieldValue,str_SearchType,str_FieldName);
							break;
					}
				}	
			}					
			return str_Sql;
		}

		//根据参数值,查询条件,字段名生成SQL语句。刘帆
		private string CreateSql(string[] str_FieldValue,string str_SearchType,string[] str_FieldName)
		{
			string str_SqlFilter = string.Empty;
			switch (str_SearchType)
			{
				case "=":
					if (str_FieldValue.Length> 0)
					{
						if(str_FieldValue.Length == 1)
						{
							str_SqlFilter = string.Format("  {0} = '{1}' ",str_FieldName[0],str_FieldValue[0]);
						}
						else
						{
							str_SqlFilter = string.Format("  {0} = '{1}' ",str_FieldName[0],str_FieldValue[0]);
							for(int i =1;i<str_FieldValue.Length;i++)
							{
								str_SqlFilter = string.Format(" {0} and {1} = '{2}' ",str_SqlFilter,str_FieldName[i],str_FieldValue[i]);
							}
						}				
					}
					break;
				case "like":
					if (str_FieldValue.Length> 0)
					{
						if(str_FieldValue.Length == 1)
						{
							str_SqlFilter = string.Format("  {0} like '%{1}%' ",str_FieldName[0],str_FieldValue[0]);
						}
						else
						{
							str_SqlFilter = string.Format("  {0} like '%{1}%' ",str_FieldName[0],str_FieldValue[0]);
							for(int i =1;i<str_FieldValue.Length;i++)
							{
								str_SqlFilter = string.Format(" {0} and {1} like '%{2}%' ",str_SqlFilter,str_FieldName[i],str_FieldValue[i]);
							}
						}				
					}
					break;
				case "in":
					if (str_FieldValue.Length> 0)
					{
						if(str_FieldValue.Length == 1)
						{
							str_SqlFilter = string.Format("  {0} in ({1}) ",str_FieldName[0],str_FieldValue[0]);
						}
						else
						{
							str_SqlFilter = string.Format("  {0} in ({1}) ",str_FieldName[0],str_FieldValue[0]);
							for(int i =1;i<str_FieldValue.Length;i++)
							{
								str_SqlFilter = string.Format(" {0} and {1} in ({2}) ",str_SqlFilter,str_FieldName[i],str_FieldValue[i]);
							}
						}				
					}
					break;
			}
			return str_SqlFilter;
		}

		//根据参数值,查询条件,字段名生成SQL语句。阎水龙
		public string CreateSqlString(string[] str_FieldValue,string[] str_FieldName,string[] str_SearchType,string[] str_FieldType)
		{
			string str_SqlFilter = " ";
			for(int i =0;i<str_FieldName.Length;i++)
			{
				if(str_FieldValue[i].ToString().Trim() !=string.Empty)
				{
					switch (str_SearchType[i])
					{
						case "=":
							this.Gfunction.StringAdd(ref str_SqlFilter," ",string.Format("  {0} = '{1}' ",str_FieldName[i],str_FieldValue[i])," and ");
							break;
						case "like":
							this.Gfunction.StringAdd(ref str_SqlFilter," ",string.Format("  {0} like '%{1}%' ",str_FieldName[i],str_FieldValue[i])," and ");
							break;
						case "in":
							this.Gfunction.StringAdd(ref str_SqlFilter," ",string.Format("  {0} in ({1}) ",str_FieldName[i],str_FieldValue[i])," and ");
							break;
						case "not like":
							this.Gfunction.StringAdd(ref str_SqlFilter," ",string.Format("  {0} not like '%{1}%' ",str_FieldName[i],str_FieldValue[i])," and ");
							break;
					}
				}				
			}
			return str_SqlFilter;
		}

		//该函数负责插入数据
		[WebMethod]
		public int InsertTableBase(ref SqlCommand mySqlCommand,ref SqlConnection myConn,ref SqlTransaction myTrans,string myTableName,DataTable myDataTable,ref string SqlString)
		{

			DataColumnCollection myCols=myDataTable.Columns;
			string SqlInsert = string.Format(" insert into {0} (",myTableName);
			int ColumnCount=myDataTable.Columns.Count;
			foreach(DataColumn col in  myCols)
			{
				SqlInsert = string.Format(" {0} {1} ,",SqlInsert,col.ColumnName);				
			}
			SqlInsert=SqlInsert.Remove( SqlInsert.Length -1,1);//删除最后一个逗号.
			SqlInsert = string.Format(" {0} ) values ( ",SqlInsert);
			//执行插入语句
			foreach(DataRow row in myDataTable.Rows)
			{
				SqlString=SqlInsert;
				for (int i=0;i<ColumnCount;i++)
				{
					if (row[i].ToString()=="")
					{
						SqlString=SqlString+"null,";
					}
					else
					{
						SqlString=SqlString+"'"+row[i].ToString()+"',";
					}				
					
				}
				SqlString=SqlString.Remove(SqlString.Length -1,1);//删除最后一个逗号.
				SqlString=SqlString+")";
				mySqlCommand.CommandText=SqlString;
				try
				{
					mySqlCommand.ExecuteNonQuery();				
				}
				catch(SqlException e)
				{
					myTrans.Rollback();//取消事务
					myConn.Close();//终止连接
					return 1;
				}
			}
			return 0; 
		}

		[WebMethod]
		public int UpdateTableBase(ref SqlCommand mySqlCommand,ref SqlConnection myConn,ref SqlTransaction myTrans,string myTableName,DataTable myDataTable,ref string SqlString,ref string s_pk)
		{
			DataColumnCollection myCols=myDataTable.Columns;
			//string sPrimaryKey=myDataTable.PrimaryKey[0].ToString();
			string sPrimaryKey = s_pk;
			string SqlInsert="update "+myTableName+" set ";
				
			//执行修改语句
			foreach(DataRow row in myDataTable.Rows)
			{
				SqlString=SqlInsert;
				string SqlWhere = string.Format("{0} = '{1}'",sPrimaryKey,row[sPrimaryKey].ToString());
				myCols.Remove(s_pk);
				foreach(DataColumn col in  myCols)
				{
					if (row[col.ColumnName].ToString()=="")
					{
						SqlString=SqlString+col.ColumnName+"="+"null,";
					}
					else
					{
						SqlString=SqlString+col.ColumnName+"="+"'"+row[col.ColumnName].ToString()+"',";
					}					
				}
				SqlString=SqlString.Remove(SqlString.Length -1,1);//删除最后一个逗号.
				//SqlString=SqlString+" where "+sPrimaryKey+"=";
				//SqlString=SqlString+"'"+row[sPrimaryKey].ToString()+"'";
				SqlString = string.Format("{0} where {1} ",SqlString,SqlWhere);
				mySqlCommand.CommandText=SqlString;
				try
				{
					mySqlCommand.ExecuteNonQuery();
				
				}
				catch(SqlException e)
				{
					myTrans.Rollback();//取消事务
					myConn.Close();//终止连接
					return 1;
				}
			}
			return 0; 
		}

		[WebMethod]
		public int UpdateTableBaseFromSQL(ref SqlCommand mySqlCommand,ref SqlConnection myConn,ref SqlTransaction myTrans,string SqlString)
		{
			mySqlCommand.CommandText=SqlString;
			try
			{
				mySqlCommand.ExecuteNonQuery();
				
			}
			catch(SqlException e)
			{
				myTrans.Rollback();//取消事务
				myConn.Close();//终止连接
				return 1;
			}
			return 0; 
		}		



		//该函数负责删除数据
		[WebMethod]
		public int DeleteTableBase(ref SqlCommand mySqlCommand,ref SqlConnection myConn,ref SqlTransaction myTrans,string myTableName,ref string SqlString)
		{
			SqlString = string.Format("delete {0} where {1} ",myTableName,SqlString);
			//执行删除语句
			mySqlCommand.CommandText=SqlString;
			try
			{
				mySqlCommand.ExecuteNonQuery();				
			}
			catch(SqlException e)
			{
				myTrans.Rollback();//取消事务
				myConn.Close();//终止连接
				return 1;
			}
			return 0; 
		}

		//制作根据数据集按照指定条件,取出指定字段的值的公共函数
		[WebMethod]
		public string GetFieldValue(string FieldName,string FieldValue,string TableName,string GetFieldName)
		{
			string strGetFieldValue = string.Empty;
			string[] strFieldValue = {FieldValue};
			string[] strFieldName = {FieldName};
			string SearchType = "=";
			string strWhere = this.CreateSql(strFieldValue,SearchType,strFieldName);
			string strSql = string.Format(" select {0} from {1} where {2}",GetFieldName,TableName,strWhere);
			try
			{
				DataSet ds = this.CreateDataSetFromSql(strSql);
				strGetFieldValue=ds.Tables[0].Rows[0][GetFieldName].ToString();
			}
			catch 
			{
				strGetFieldValue = string.Empty;
			}
			return strGetFieldValue;
		}

		//该函数负责生成表
		[WebMethod]
		public int CreateTable(ref SqlCommand mySqlCommand,ref SqlConnection myConn,ref SqlTransaction myTrans,ref string myTableName,ref string type,ref string SqlString)
		{
			string strSql = string.Empty;
			if (SqlString.Trim() != string.Empty)
			{
				if (type == "1")
				{
					strSql =string.Format(" drop Table [{0}]",myTableName);
				}
				if (type == "2")
				{
					strSql = string.Format(" drop view [{0}]",myTableName);
				}
				this.CreateDataSetFromSql(strSql);
			}			
			//执行删除语句
			mySqlCommand.CommandText=SqlString;
			try
			{
				mySqlCommand.ExecuteNonQuery();				
			}
			catch(SqlException e)
			{
				myTrans.Rollback();//取消事务
				myConn.Close();//终止连接
				return 1;
			}
			myTrans.Commit();
			myConn.Close();
			return 0; 
		}
		
		/// <summary>
		/// 该函数负责生成建表的Sql语句。
		/// </summary>
		[WebMethod]
		public string CreateTableSql(string TableName,DataSet ds)
		{
			string sqlCreateTable = string.Empty;
			string strPk = string.Empty;
			string[] str_field = {"t_name","t_dtype","t_size","t_decimal","t_pk"};
			if (ds.Tables[0].Rows.Count > 0)
			{
				for (int i=0;i<ds.Tables[0].Rows.Count;i++)
				{
					str_field[0] = ds.Tables[0].Rows[i]["t_name"].ToString();
					str_field[1] = ds.Tables[0].Rows[i]["t_dtype"].ToString();
					str_field[2] = ds.Tables[0].Rows[i]["t_size"].ToString();
					str_field[3] = ds.Tables[0].Rows[i]["t_decimal"].ToString();
					str_field[4] = ds.Tables[0].Rows[i]["t_pk"].ToString();
					switch (str_field[1])
					{
						case "int":
							str_field[2] = string.Empty;
							break;
						case "decimal":
							str_field[2] = string.Format("({0},{1})",str_field[2],str_field[3]);
							break;
						case "datetime":
							str_field[2] = string.Empty;
							break;
						case "ntext":
							str_field[2] = string.Empty;
							break;
						default:
							str_field[2] = string.Format("({0})",str_field[2]);
							break;
					}//switch
					if (str_field[4] == "1")
					{
						str_field[4] = " NOT NULL ";
						strPk = string.Format( "{0} {1} ,",strPk,str_field[0].ToString());						
					}
					else
					{
						str_field[4] = string.Empty;
					}											   
					sqlCreateTable = string.Format(" {0} [{1}] [{2}]{3} {4} ,",sqlCreateTable,str_field[0],str_field[1],str_field[2],str_field[4]);
					sqlCreateTable = sqlCreateTable.Remove(sqlCreateTable.Length-1,1);
					strPk = strPk.Remove(strPk.Length-1,1);
					sqlCreateTable = string.Format(" create Table [{0}] ({1} primary key ({2}) ); ",TableName,sqlCreateTable,strPk);
				}//for
			}// if
			return sqlCreateTable;
		}

		[WebMethod]
		public string GetID(string strSql)
		{
			string strID = string.Empty;
			DataSet ds = this.CreateDataSetFromSql(strSql);
			if (ds.Tables[0].Rows.Count > 0)
			{
				strID = ds.Tables[0].Rows[ds.Tables[0].Rows.Count-1][0].ToString();
			}
            return strID;
		}

	

		
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?