日期:2014-05-19  浏览次数:21175 次

关于“ System.Data.OleDb.OleDbException: 至少一个参数没有被指定值。”的错误,请教
大家看这段代码,我检查很久,我估计是   sql   语句那里有错误,但是我还是不知道怎么改,请大家帮我看看,
protected   void   SearchButton_Click(object   sender,   EventArgs   e)
        {
                resultmsg.Text   =   " ";
                string   strIp   =   IPTextBox.Text;
                long   ipvalue   =   IpToNum(strIp);//这个函数的目的是将IP地址转换为数值          
                OleDbCommand   dataCommand   =   new   OleDbCommand();
                ConnectAccessDB();
                dataCommand.Connection   =   accessConn;
                dataCommand.CommandText=                    
                "SELECT   *   FROM   iptable   "   +
              "WHERE       starp <=ipvalue   AND   endp> =ipvalue ";                
                OleDbDataReader   dataReader   =   dataCommand.ExecuteReader();//   96   行,错误所在行
                while   (dataReader.Read())
                {  
                        resultmsg.Text+=   dataReader.GetString(5);  
                        resultmsg.Text+=   dataReader.GetString(6);  
                }
                dataCommand.Connection.Close();
                accessConn.Close();
        }
提示错误:
异常详细信息:   System.Data.OleDb.OleDbException:   至少一个参数没有被指定值。
源错误:  


行   94:                   "SELECT   *   FROM   iptable   "   +
行   95:                 "WHERE       starp <=ipvalue   AND   endp> =ipvalue ";                
行   96:                   OleDbDataReader   dataReader   =   dataCommand.ExecuteReader();
行   97:                   while   (dataReader.Read())
行   98:                   {  
 

源文件:   e:\Visual   Studio   2005\WebSites\IP   search\IpSearch.aspx.cs         行:   96  
我这里没有同学可以请教,所以期待网上各位朋友帮助!

------解决方案--------------------
这样改,此行改为
dataCommand.CommandText=
"SELECT * FROM iptable " +
"WHERE starp <=? AND endp> =? ";
在执行之前的地方加入这一行:
dataCommand.Parameters.AddWithValue( "starp ", ipvalue);