[WebMethod]
public bool DBSqlServerOperater(string DBConnectionString,string Sql)
{
SqlConnection m_SqlConnection = new SqlConnection(DBConnectionString);
m_SqlConnection.Open();
SqlCommand command = m_SqlConnection.CreateCommand();
command.CommandText = Sql;
command.ExecuteNonQuery();
m_SqlConnection.Close();
return true;
}
这个是服务器端的web服务的代码,请问是否能在客户端调用web引用,在更改客户端的数据库的同时,也更改服务器端代码,是否可以给我一份关于类似的现成的代码,谢谢
public bool DBSqlServerOperater(string DBConnectionString,string Sql)
{
SqlConnection m_SqlConnection = new SqlConnection(DBConnectionString);
m_SqlConnection.Open();
SqlCommand command = m_SqlConnection.CreateCommand();
command.CommandText = Sql;
command.ExecuteNonQuery();
m_SqlConnection.Close();
return true;
}
这个是服务器端的web服务的代码,请问是否能在客户端调用web引用,在更改客户端的数据库的同时,也更改服务器端代码,是否可以给我一份关于类似的现成的代码,谢谢
解决方案 »
- 利用手动配置将数据集中的更改保存到后台数据库。
- 菜鸟问题又来了,VS2005(08)中如何使用向导对话框
- 关于ReportViewer 显示数据问题
- 简单的问题
- interop.excel的Page Setup 问题.高手抽空看下
- 如何提高C#的读写速度
- 很抱歉,没分了..
- 网络传输及处理关于数据流的问题(Stream,MemoryStream,FileStream,Byte[])
- C#对数据库操作的问题
- 如何将几张同样size的图片按顺序组合成gif动画
- 谁使用的是VS2005版的?有问题急需请教,谢谢
- 集成VS.NET IDE的代码生成器(支持VB.NET和C#语言,支持ORM代码与三层代码生成)
那么你的客户端引用此webservice后,只要分别指明连接字符串,就可以连接不同数据库服务器。
/// 根据指定的信息,调用远程WebService方法
/// </summary>
/// <param name="url">WebService的http形式的地址</param>
/// <param name="namespace">欲调用的WebService的命名空间</param>
/// <param name="classname">欲调用的WebService的类名(不包括命名空间前缀)</param>
/// <param name="methodname">欲调用的WebService的方法名</param>
/// <param name="args">参数列表</param>
/// <returns>WebService的执行结果</returns>
/// <res>
/// 如果调用失败,将会抛出Exception。请调用的时候,适当截获异常。
/// 异常信息可能会发生在两个地方:
/// 1、动态构造WebService的时候,CompileAssembly失败。
/// 2、WebService本身执行失败。
/// </res>
/// <example>
/// <code>
/// object obj = InvokeWebservice("http://localhost/GSP_WorkflowWebservice/common.asmx","Genersoft.Platform.Service.Workflow","Common","GetToolType",new object[]{"1"});
/// </code>
/// </example>
private object InvokeWebservice(string url, string @namespace, string classname, string methodname, object[] args)
{
try
{
System.Net.WebClient wc = new System.Net.WebClient();
System.IO.Stream stream = wc.OpenRead(url+"?WSDL");
System.Web.Services.Description.ServiceDescription sd = System.Web.Services.Description.ServiceDescription.Read(stream);
System.Web.Services.Description.ServiceDescriptionImporter sdi = new System.Web.Services.Description.ServiceDescriptionImporter();
sdi.AddServiceDescription(sd,"","");
System.CodeDom.CodeNamespace cn = new System.CodeDom.CodeNamespace(@namespace);
System.CodeDom.CodeCompileUnit ccu = new System.CodeDom.CodeCompileUnit();
ccu.Namespaces.Add(cn);
sdi.Import(cn,ccu); Microsoft.CSharp.CSharpCodeProvider csc = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler icc = csc.CreateCompiler(); System.CodeDom.Compiler.CompilerParameters cplist = new System.CodeDom.Compiler.CompilerParameters();
cplist.GenerateExecutable = false;
cplist.GenerateInMemory = true;
cplist.ReferencedAssemblies.Add("System.dll");
cplist.ReferencedAssemblies.Add("System.XML.dll");
cplist.ReferencedAssemblies.Add("System.Web.Services.dll");
cplist.ReferencedAssemblies.Add("System.Data.dll"); System.CodeDom.Compiler.CompilerResults cr = icc.CompileAssemblyFromDom(cplist, ccu);
if(true == cr.Errors.HasErrors)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach(System.CodeDom.Compiler.CompilerError ce in cr.Errors)
{
sb.Append(ce.ToString());
sb.Append(System.Environment.NewLine);
}
throw new Exception(sb.ToString());
}
System.Reflection.Assembly assembly = cr.CompiledAssembly;
Type t = assembly.GetType(@namespace+"."+classname,true,true);
object obj = Activator.CreateInstance(t);
System.Reflection.MethodInfo mi = t.GetMethod(methodname);
return mi.Invoke(obj,args);
}
catch(Exception ex)
{
throw new Exception(ex.InnerException.Message,new Exception(ex.InnerException.StackTrace));
}
}