读书人

采用webservice的方法在form应用程序中

发布时间: 2013-09-15 19:58:13 作者: rapoo

采用webservice的方法在form应用程序中实现远端的MDB文件操作的问题!
目的:
希望通过某计算机上的form程序对同局域网的服务器上的mdb文件进行操作。操作系统均为xp sp3,软件环境为vs2008。
实现方法:
1)在服务器上架设webservice,并设计本端调用mdb文件的方法。将webservice部署到Internet信息服务上。

[WebMethod("insert mdb 方法")]
public bool mdbinsert(string insertstr)
{
System.Data.DataSet myDataSet = null;
try
{
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = E:/HMI/data.mdb";
OleDbConnection myConn = new OleDbConnection(strCon);

myConn.Open();

OleDbCommand myCommand = new OleDbCommand(InsertStr, myConn);
myCommand.ExecuteNonQuery();

myConn.Close();

return true;
}
catch (Exception ex)
{
return false;
}

}

[WebMethod("query mdb 方法")]
public DataSet mdbquery(string querystr,string tablestr)
{
System.Data.DataSet myDataSet = null;
try
{


string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = E:/HMI/data.mdb";
OleDbConnection myConn = new OleDbConnection(strCon);
myConn.Open();

myDataSet = new DataSet();

OleDbDataAdapter myCommand = new OleDbDataAdapter(querystr, myConn);
myCommand.Fill(myDataSet, tablestr);

myConn.Close();
}
catch (Exception ex)
{

}
return myDataSet;

}


2)在form应用程序中引用 webservice
采用webservice的方法在form应用程序中实现远端的MDB文件操作的有关问题
form应用程序的代码如下
//insert
private void button1_Click(object sender, EventArgs e)
{
WebReference.Service1 MyWeb = new WebReference.Service1();

string tempname = "测试人";
Random rd = new Random();
string temppwd = Convert.ToInt32(rd.Next(1000)).ToString();

//string InsertStr = "INSERT INTO USERPWD(username,userpwd,电源,精调,检验,维修) VALUES('" + tempname + "','" + temppwd + "',1,2,3,4)";
//string TempStr = "INSERT INTO USERPWD(username,userpwd,电源,精调,检验,维修) VALUES('测试',999,1,2,3,4)";


string TempStr = "INSERT INTO USERPWD(userpwd) VALUES(999)";
bool Resault = MyWeb.mdbinsert(TempStr, "USERPWD");

textBox1.Text = textBox1.Text + Resault.ToString() + "\r\n";

MessageBox.Show("插入完毕");
}

//Query
private void button2_Click(object sender, EventArgs e)
{
WebReference.Service1 MyWeb = new WebReference.Service1();

System.Data.DataSet ODataSet;
string QueryWord = " SELECT * FROM USERPWD ";
string QueryTable = "USERPWD";

ODataSet = MyWeb.mdbquery(QueryWord, QueryTable);

ArrayList AList = new ArrayList();

for (int i = 0; i < ODataSet.Tables[0].Rows.Count; i++)
{
string Temp = ODataSet.Tables[0].Rows[i][QueryTable].ToString();
//AList.Add(Temp);

textBox1.Text = textBox1.Text + Temp + "\r\n";
}

MessageBox.Show("读取完毕");
}



问题:
在form应用程序中使用“query的方法”可以进行调用,且数据正常。但是使用“insert的方法”总是不正常,方法的返回值为false。
在webservice的调试状态中,于打开的web网页中进行调用两种方法,返回数据都是正确的。但是,直接用web浏览器打开的网页中进行调用两种方法,“query的方法”可以进行调用,“insert的方法”也总是不正常,方法的返回值为false。同form应用程序中的情况一致。



请各位不吝赐教!先谢谢了。 webservice mdb 局域网
[解决办法]
mdb数据库是否有其它程序以独占方式打开了?
你在webservice的两个catch中都加上throw,看看异常是什么?
catch (Exception ex)
{
throw;
}
[解决办法]
错误信息被丢弃,楼主的命运注定就有更多坎坷,知错就改吧!
[解决办法]
另外,关闭数据连接的语句应该放在 finally { }中,编程要严谨。
[解决办法]
返回false没有实际意义,关键是看具体的错误信息是什么。
[解决办法]
如果你不自己处理error就别写try
自己给自己找麻烦
吧你程序的try去掉
看看到底是什么错误

读书人网 >asp.net

热点推荐