⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataservice.asmx.cs

📁 lgxgrid控件lgxgrid控件lgxgrid控件lgxgrid控件lgxgrid控件lgxgrid控件
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace WebForm
{
	/// <summary>
	/// DataService 的摘要说明。
	/// </summary>
	public class DataService : System.Web.Services.WebService
	{
		ADODB._Connection Mysjk=new ADODB.ConnectionClass();

        //[ WebMethod(Description="Per session Hit Counter",EnableSession=true)]
		public DataService()
		{
			//CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的
			InitializeComponent();
			string Sjkf = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" + Server.MapPath("lgxysl.mdb") + ";";
			Mysjk.Open(Sjkf,null,"lgxyslldw901890",-1);
		}



		//公用函数
		public struct TableList 
		{
			public string Name;
			public string Type;
		}

		private string GetListType(string TableName,string ListName)
		{
			TableList[] LN=ListNameGet(TableName);
			int LNs=LN.GetUpperBound(0);
			for(int i=0;i<=LNs;i++)
			{
				if(LN[i].Name==ListName)
				{
					return LN[i].Type.ToString();
				}
			}
			return "NotFind";
		}
		
		private TableList[] ListNameGet(string TableName)
		{
			//SqlCommand myCommand = new SqlCommand("SELECT TOP 0 * FROM "+TableName ,Mysjk);
			//SqlDataReader MyRe = myCommand.ExecuteReader();
			ADODB.Recordset Myre;
			object p=null;
			Myre=Mysjk.Execute("SELECT * FROM "+TableName,out p,0);
			int Rs=Myre.Fields.Count;
			TableList[] ReData=new TableList[Rs];
			int UB=ReData.GetUpperBound(0);

			//根据查询命令字符串成,执行查询,返回结果集

			for(int i=0;i<=UB;i++)
			{
				ReData[i].Name=Myre.Fields[i].Name.ToString();
				ReData[i].Type=Myre.Fields[i].Type.ToString();
			}
			Myre.Close();
			return ReData;
		}
		
		private string RunSql(string SqlTxt)
		{
			try
			{
				string[] ComT=SqlTxt.Split(new char[] {' '});
				string ComTxt=ComT[0].ToString();
				if (ComTxt!="SELECT")
				{
					object p=null;
					Mysjk.Execute(SqlTxt,out p,0);
					return "-1";//操作查询返回"-1"
				}
				else
				{
					ADODB.Recordset Myre;
					object p=null;
					Myre=Mysjk.Execute(SqlTxt,out p,0);
					string Res=Myre.Fields[0].Value.ToString();
					Myre.Close();
					return Res;//选择查询返回首列的第一个数据
				}
			}
			catch(Exception error)
			{
				return error.Message+"。";//返回错误信息和查询表达式
			}
		}

		private System.Xml.XmlDocument RunReader(string SqlTxt)
		{
			//执行有返回值的SELECT查询,以XML的方式返回查询结果
			//参数为一条SELECT查询命令
			//返回值是一个XML文档
			try
			{
				string[] ComT=SqlTxt.Split(new char[] {' '});
				string ComTxt=ComT[0].ToString();
				if (ComTxt=="SELECT")
				{
					//检测是否是SELECT查询,如果是
					ADODB.Recordset Myre;
					object p=null;
					Myre=Mysjk.Execute(SqlTxt,out p,0);
					//根据查询命令字符串成,执行查询,返回结果集
					System.Xml.XmlDocument XmlDoc=new System.Xml.XmlDocument();
					string XmlTxt="";
					//XmlTxt="<?xml version='1.0' encoding='utf-8'?>";
					XmlTxt=XmlTxt+"<Root></Root>";
					XmlDoc.LoadXml(XmlTxt);
					int Cs=0;
					while(!Myre.EOF)
					{
						Cs++;
						System.Xml.XmlNode NewRecord=XmlDoc.CreateNode(System.Xml.XmlNodeType.Element,"Record","");
						XmlDoc.DocumentElement.AppendChild(NewRecord);
						string Das="";
						for(int i=0;i<=Myre.Fields.Count-1;i++)
						{
							
							switch (Myre.Fields[i].Type.ToString())
							{
								case "adDouble"://数字
								case "adSingle":	
									if (Myre.Fields[i].Value.ToString()!="")
									{
										double DoDas=Double.Parse(Myre.Fields[i].Value.ToString());
										//Das=DoDas.ToString("0.00");
										Das=DoDas.ToString();
									}
									else
									{
										Das="";
									}
									break;
								case "adDBTimeStamp"://日期
									if(Myre.Fields[i].Value.ToString()!="")
									{
										DateTime DT=DateTime.Parse(Myre.Fields[i].Value.ToString());
										Das=DT.Year+"年"+DT.Month+"月"+DT.Day+"日";
									}
									else
									{
										Das=Myre.Fields[i].Value.ToString();
									}
									break;
								default://文本
									Das=Myre.Fields[i].Value.ToString();
									break;
							}
							System.Xml.XmlNode newfield=XmlDoc.CreateNode(System.Xml.XmlNodeType.CDATA,"Field", "");
							newfield.Value=Das;
							NewRecord.AppendChild(newfield);
						}
						Myre.MoveNext();
					}
					if(Cs==0)
					{
						XmlTxt="<Root><Record><![CDATA[Error,没有查到任何记录。]]></Record></Root>";
						XmlDoc.LoadXml(XmlTxt);
						return XmlDoc;
					}
					//历遍结果集,并将它转为XML格式
					Myre.Close();
					//关闭结果集
					//生成XML对象
					return XmlDoc;
					//返回XML对象
				}
				else
				{
					string XmlTxt="<Root><Record><![CDATA[Error,该查询不是可返回值的查询]]></Record></Root>";
					System.Xml.XmlDocument XmlDoc=new System.Xml.XmlDocument();
					XmlDoc.LoadXml(XmlTxt);
					return XmlDoc;
					//返回出错信息,在前面加了一个Error以方便识别它
				}
			}
			catch(Exception error)
			{
				string XmlTxt="<Root><Record><![CDATA[Error,"+error.Message+"。]]></Record></Root>";
				System.Xml.XmlDocument XmlDoc=new System.Xml.XmlDocument();
				XmlDoc.LoadXml(XmlTxt);
				return XmlDoc;
				//返回系统错误信息,在前面加了一个Error以方便识别它
			}
		}

		private string SetAdd(bool AutoKey,string DataN,System.Xml.XmlDocument MyXmlDoc)
		{
			//往一个表中添加一条记录
			//DataN:表名
			//要添加的数据
			try
			{
				string SqlTxt="";
				System.Xml.XmlNode SqlValue=MyXmlDoc.SelectSingleNode("Root/Record");
				int Datas=SqlValue.ChildNodes.Count;
				SqlTxt="INSERT into "+DataN+" Values(";
				int IDMax=0;
				if (AutoKey==true)
				{
					string ID="0";
					ID=RunSql("SELECT Count(ID) FROM "+DataN);
					if(int.Parse(ID)>0)
					{
						ID=RunSql("SELECT Max(ID) FROM "+DataN);
						int IDInt=int.Parse(ID);
						IDMax=IDInt+1;
					}
					else
					{
						IDMax=1;
					}
					SqlTxt=SqlTxt+IDMax+",";
				}

				TableList[] TableL=ListNameGet(DataN);
				string Ltype="";
				for(int i=0;i<Datas-1;i++)
				{
					if(AutoKey==true)
					{
						Ltype=TableL[i+1].Type;
					}
					else
					{
						Ltype=TableL[i].Type;
					}
					switch (Ltype)
					{
						case "adVarWChar":
							if(SqlValue.ChildNodes[i].InnerText!="null" && SqlValue.ChildNodes[i].InnerText!="")
							{
								SqlTxt=SqlTxt+"'"+SqlValue.ChildNodes[i].InnerText+"',";
							}
							else
							{
								SqlTxt=SqlTxt+"null,";
							}
							//字符串类型的数据
							break;
						case "adDouble"://数字
						case "adSingle":
						case "adInteger":
							if(SqlValue.ChildNodes[i].InnerText!="null" && SqlValue.ChildNodes[i].InnerText!="")
							{

								double DouData=Double.Parse(SqlValue.ChildNodes[i].InnerText);
								SqlTxt=SqlTxt+DouData+",";
								//SqlTxt=SqlTxt+SqlValue.ChildNodes[i].InnerText;
							}
							else
							{
								SqlTxt=SqlTxt+"null,";
							}
							//数值类型的数据,可能含有百分号
							break;
						case "adDBTimeStamp"://日期
							if (SqlValue.ChildNodes[i].InnerText!="null" && SqlValue.ChildNodes[i].InnerText!="")
							{
								SqlTxt=SqlTxt+"datevalue('"+SqlValue.ChildNodes[i].InnerText+"'),";
							}
							else
							{
								SqlTxt=SqlTxt+"null,";
							}
							//日期时间类型的数据
							break;

						default:
							SqlTxt=SqlTxt+SqlValue.ChildNodes[i].InnerText+",";
							//其他类型的数据
							break;
					}
				}
				Ltype=TableL[Datas-1].Type;


				switch (Ltype)
				{
					case "adVarWChar":
						if(SqlValue.ChildNodes[Datas-1].InnerText!="null" && SqlValue.ChildNodes[Datas-1].InnerText!="")
						{
							SqlTxt=SqlTxt+"'"+SqlValue.ChildNodes[Datas-1].InnerText+"')";
						}
						else
						{
							SqlTxt=SqlTxt+"null)";
						}						//字符串类型的数据
						break;
					case "adDouble"://数字
					case "adSingle":
					case "adInteger":
						if(SqlValue.ChildNodes[Datas-1].InnerText!="null" && SqlValue.ChildNodes[Datas-1].InnerText!="")
						{
							double DouData=Double.Parse(SqlValue.ChildNodes[Datas-1].InnerText);
							SqlTxt=SqlTxt+DouData+")";
							//SqlTxt=SqlTxt+SqlValue.ChildNodes[Datas-1].InnerText;
						}
						else
						{
							SqlTxt=SqlTxt+"null)";
						}
						//数值类型的数据,可能含有百分号
						break;
					case "adDBTimeStamp"://日期
						if (SqlValue.ChildNodes[Datas-1].InnerText!="null" && SqlValue.ChildNodes[Datas-1].InnerText!="")
						{
							SqlTxt=SqlTxt+"datevalue('"+SqlValue.ChildNodes[Datas-1].InnerText+"'))";
						}
						else
						{
							SqlTxt=SqlTxt+"null)";
						}
						//日期时间类型的数据
						break;

					default:
						SqlTxt=SqlTxt+SqlValue.ChildNodes[Datas-1].InnerText+")";
						//其他类型的数据
						break;
				}
				//以上生成插入查询命令

				string reT=RunSql(SqlTxt);
				if(reT=="-1")
				{
					if (AutoKey==true)
					{
						return IDMax.ToString();
					}
					else
					{
						return reT;
					}
				}
				else
				{
					return reT;
				}

				//执和命令
			}

			catch(Exception error)
			{
				return error.Message;
			}		
		}

		private string SetUpdate(bool TextKey,string DataN,TableList TableH,string OldKey,System.Xml.XmlDocument MyXmlDoc)
		{
			//功能:更新某个表的一条记录
			//DataN:表名
			//TableH:字段列表
			//OldKey:更新前索引ID值
			//MyXmlDoc:新的记录数据

			try
			{
				string SqlTxt="UPDATE "+DataN+" Set ";
				System.Xml.XmlNode SqlValue=MyXmlDoc.SelectSingleNode("Root/Record");
				//int Datas=SqlValue.ChildNodes.Count;//获得要更新的字段数
				string Ltype="";
				/**
				for(int i=0;i<Datas-1;i++)
				{
					Ltype=TableH[i].Type;
					switch (Ltype)
					{
						case "adVarWChar":
							SqlTxt=SqlTxt+TableH[i].Name+"='"+SqlValue.ChildNodes[i].InnerText+"',";
							//字符串类型的数据
							break;
						case "adDouble"://数字
						case "adSingle":
						case "adInteger":
							if (SqlValue.ChildNodes[i].InnerText!="null" && SqlValue.ChildNodes[i].InnerText!="")
							{
								double DouData=Double.Parse(SqlValue.ChildNodes[i].InnerText);
								SqlTxt=SqlTxt+TableH[i].Name+"="+DouData+",";
							}
							else
							{
								SqlTxt=SqlTxt+TableH[i].Name+"=null,";
							}
							//数值类型的数据
							break;
						case "adDBTimeStamp"://日期
							if(SqlValue.ChildNodes[i].InnerText!="null" && SqlValue.ChildNodes[i].InnerText!="")
							{
								DateTime DT=DateTime.Parse(SqlValue.ChildNodes[i].InnerText);
								SqlTxt=SqlTxt+TableH[i].Name+"='"+DT.ToString()+"',";
							}
							else
							{
								SqlTxt=SqlTxt+TableH[i].Name+"=null,";
							}
							//日期时间类型的数据
							break;

						default:
							SqlTxt=SqlTxt+TableH[i].Name+"="+SqlValue.ChildNodes[i].InnerText+",";
							//其他类型的数据
							break;
					}
				}
				**/
				//Ltype=TableH[Datas-1].Type;
				Ltype=TableH.Type;
				switch (Ltype)
				{
					case "adVarWChar":
						if(SqlValue.ChildNodes[0].InnerText!="null" && SqlValue.ChildNodes[0].InnerText!="")
						{
							SqlTxt=SqlTxt+TableH.Name+"='"+SqlValue.ChildNodes[0].InnerText+"' ";
						}
						else
						{
							SqlTxt=SqlTxt+TableH.Name+"=Null ";
						}
						//字符串类型的数据
						break;
					case "adDouble"://数字
					case "adSingle":
					case "adInteger":
						if (SqlValue.ChildNodes[0].InnerText!="null" && SqlValue.ChildNodes[0].InnerText!="")
						{
							double DouData=Double.Parse(SqlValue.ChildNodes[0].InnerText);
							SqlTxt=SqlTxt+TableH.Name+"="+DouData+" ";
						}
						else
						{
							SqlTxt=SqlTxt+TableH.Name+"=null ";
						}
						//数值类型的数据
						break;
					case "adDBTimeStamp"://日期
						if(SqlValue.ChildNodes[0].InnerText!="null" && SqlValue.ChildNodes[0].InnerText!="")
						{
							SqlTxt=SqlTxt+TableH.Name+"=DateValue('"+SqlValue.ChildNodes[0].InnerText+"') ";
						}
						else
						{
							SqlTxt=SqlTxt+TableH.Name+"=null ";
						}
						//日期时间类型的数据
						break;

					default:
						SqlTxt=SqlTxt+TableH.Name+"="+SqlValue.ChildNodes[0].InnerText+" ";
						//其他类型的数据
						break;
				}
				if(TextKey==false)
				{
					SqlTxt=SqlTxt+" Where ID="+OldKey;
				}
				else
				{

⌨️ 快捷键说明

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