首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

采用webservice的方法在form应用程序中实现远端的MDB文件操作的有关问题

2013-09-15 
采用webservice的方法在form应用程序中实现远端的MDB文件操作的问题!目的:希望通过某计算机上的form程序对

采用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去掉
看看到底是什么错误

热点排行