1.在asp中,可以利用addnew方法和insert into(sql语句)就能给access数据库添加记录,当字段很多时addnew方法特别好用,现在使用.net中给access数据库添加个记录怎么变得遥不可及?
问苍天,谁能告诉我,怎么能象asp中利用addnew方法那样在.net中给access数据库添加记录?
http://community.csdn.net/Expert/topic/5122/5122630.xml?temp=.13528082.在asp中,可以利用PageSize属性就能给access数据库分页显示数据,当数据很多时PageSize属性特别好用,现在使用.net中给access数据库分页显示数据怎么变得遥不可及,只能依靠什么破服务器端控件,一次读取所有的数据,而不管数据记录的多少吗?
问苍天,谁能告诉我,怎么能象asp中利用PageSize属性那样在.net中给access数据库分页显示?
http://community.csdn.net/Expert/topic/5121/5121517.xml?temp=.30460763.……

解决方案 »

  1.   

    asp.net明显比asp有优势,只是你不会用而已.
      

  2.   

    不清楚,没用过ASP。我能说的也就是,哥们,没办法,谁要这东西不是咱搞的呢;将就着用吧!用习惯了麻木了就好了!
      

  3.   

    我汗,在.net中也很容易阿
    你去孟子的网站看看那些分页的例子,都是非常简单的
    等你用了一次两次你就有体会了
      

  4.   

    你仍然可以使用ADO啊?你不喜欢ADO.NET,这与ASP.NET何干?
      

  5.   

    从不熟悉到熟悉当然要有个过程
    当时你学asp很容易吗?
      

  6.   

    创建一个自定义实体类比如user
    然后写一个方法 create (user u)就可以操作了
    或者找来第三方的orm工具,操作很方便
      

  7.   

    csdn中的Blog的分页也没用什么控件,请问他是如何分页的?
      

  8.   

    1. dotNet显然比asp更加规范,asp来源于vb,vb本来就是一种不太规范的弱类型语言,虽然简单,但一但代码上几千或上万时是很不好维护的,所以楼主应该熟悉一些编程的规范,不管是c系的还是pascal系的.
    2.在asp.net中假如你要看第三页,也没有必要把所有数据都读出呀,你可以根据用户请求的页数和pagesize算出用户要的是第几条记录,然后写sql语言读出前n条语句绑定就OK了,只不过这样你在分页控件上可能不能用DataView等数据控件自已的了.
      

  9.   

    问问楼主,如何在asp里实现
    列出符合条件的一定数据,然后进行批量修改呢?
    用asp.net 相信很多人轻松实现
      

  10.   

    楼主说的是ado,.net下用的是ado.net,是无连接的数据集的概念,是有其优势的,特别对于web应用更是如此。
      

  11.   

    分页,你可以使用
    www.webdiyer.com里面的控件另外,从ASP转到.NET有一个适应过程,这是不可避免了.当然,这个过程可能很令人痛苦,但痛苦过去之后就是喜悦,第一次,总是会痛的嘛.你必须忍耐再忍耐,不管如何难受,埋头苦学,三个月后见分晓.`
      

  12.   

    用惯了ASP,用.NET的确有很多不满,服务器控件不感觉怎么好用,还是自己在ASP中组织代码好,一切尽在掌握!
      

  13.   

    都说.net好!真好!谁用谁知道!
      

  14.   

    2.在asp中,可以利用PageSize属性就能给access数据库分页显示数据,当数据很多时PageSize属性特别好用,现在使用.net中给access数据库分页显示数据怎么变得遥不可及,只能依靠什么破服务器端控件,一次读取所有的数据,而不管数据记录的多少吗?读记录的多少好象是用数据库来控制的吧?跟编程语言有什么关系?
      

  15.   

    在asp中,可以利用addnew方法和insert into(sql语句)就能给access数据库添加记录,当字段很多时addnew方法特别好用,现在使用.net中给access数据库添加个记录怎么变得遥不可及?
    问苍天,谁能告诉我,怎么能象asp中利用addnew方法那样在.net中给access数据库添加记录?如果看了企业级范例Dowamish以及Fitch and Mather你就会感到频繁操作数据库的工作原来可以很简单。
      

  16.   

    晕  去看看.net吧   比ASP方面多了
      

  17.   

    自己不研究,乱发议论,asp是什么,能更.net比吗,
    只要asp中有的,.net肯定有,只是你不会
    asp中没有的,.net照样有,只是你还是不会
      

  18.   

    不要老抱怨.net了,用熟了就行了。我以前也是做asp的,刚用.net也是不习惯,现在也不觉得怎么不好用。OleDbCommand objCmd = null;
    objCmd = new OleDbCommand("",objConn);
    objCmd.CommandText = "update product set ProNo=@ProNo,ProName=@ProName,ProPrice=@ProPrice,ProPhoto=@ProPhoto,ClassID=@ClassID,Content=@Content,UpdateTime=@UpdateTime,Editor=@Editor,Elite=@Elite where ProID = @ProID and Deleted='0'";

    objCmd.Parameters.Add("@ProNo",OleDbType.VarChar,100);
    objCmd.Parameters.Add("@ProName",OleDbType.VarChar,100);
    objCmd.Parameters.Add("@ProPrice",OleDbType.VarChar,100);
    objCmd.Parameters.Add("@ProPhoto",OleDbType.VarChar,25);
    objCmd.Parameters.Add("@ClassID",OleDbType.VarChar,20);
    objCmd.Parameters.Add("@Content",OleDbType.LongVarChar);
    objCmd.Parameters.Add("@UpdateTime",OleDbType.DBTimeStamp);
    objCmd.Parameters.Add("@Editor",OleDbType.VarChar,50);
    objCmd.Parameters.Add("@Elite",OleDbType.VarChar,2);
    objCmd.Parameters.Add("@ProID",OleDbType.VarChar,20);
    objCmd.Parameters["@ProNo"].Value        = strProNo;
    objCmd.Parameters["@ProName"].Value      = strProName;
    objCmd.Parameters["@ProPrice"].Value     = strProPrice;
    objCmd.Parameters["@ProPhoto"].Value     = strProPhoto;
    objCmd.Parameters["@ClassID"].Value      = strClassID;
    objCmd.Parameters["@Content"].Value      = strContent;
    objCmd.Parameters["@UpdateTime"].Value   = strUpdateTime;
    objCmd.Parameters["@Editor"].Value       = strEditor;
    objCmd.Parameters["@Elite"].Value        = strElite;
    objCmd.Parameters["@ProID"].Value        = strProID; objCmd.ExecuteNonQuery();用这种方法来添加数据,倒有点像asp中的addnew啊。至于你说的第二个问题,你一样可以用不取出全部的记录,用查询语句就行,然后邦定datalist或repeater,效率一样很高,至于datagrid是不好用,一般情况下可以不用。//先反序选取当前页及其后面的记录ID(intFxRowCount条),然后再正序在这些记录ID中读取前intMaxPerPage条记录就是当前页的记录
      

  19.   

    自从写了模板,访问数据库的代码大部分都是由程序生成的了用了分页控件,分页比ASP更简单
      

  20.   

    .NET更科学 
    但是重新作了归类 只能说你不会用
    好好看看文档和例子吧
    其实满简单的 ASP.NET和 ASP毕竟不是一回事 不要把什么事情按照旧思路想
      

  21.   

    ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconpagingthroughqueryresult.htmSDK文档里的这个文档,有关于ADO数据分页显示的,很简单。以下代码示例显示如何使用 Fill 方法来返回查询结果(页大小为 5 个记录)的第一页。[Visual Basic]
    Dim currentIndex As Integer = 0
    Dim pageSize As Integer = 5Dim orderSQL As String = "SELECT * FROM Orders ORDER BY OrderID"
    Dim myDA As SqlDataAdapter = New SqlDataAdapter(orderSQL, nwindConn)Dim myDS As DataSet = New DataSet()
    myDA.Fill(myDS, currentIndex, pageSize, "Orders")[C#]
    int currentIndex = 0;
    int pageSize = 5;string orderSQL = "SELECT * FROM Orders ORDER BY OrderID";
    SqlDataAdapter myDA = new SqlDataAdapter(orderSQL, nwindConn);DataSet myDS = new DataSet();
    myDA.Fill(myDS, currentIndex, pageSize, "Orders");在上例中,DataSet 只填充了 5 个记录,但却返回了整个 Orders 表。若要用相同的 5 个记录填充 DataSet 但仅返回这 5 个记录,请在 SQL 语句中使用 TOP 和 WHERE 语句,如以下代码示例所示。[Visual Basic]
    Dim pageSize As Integer = 5Dim orderSQL As String = "SELECT TOP " & pageSize & " * FROM Orders ORDER BY OrderID"
    Dim myDA As SqlDataAdapter = New SqlDataAdapter(orderSQL, nwindConn)Dim myDS As DataSet = New DataSet()
    myDA.Fill(myDS, "Orders")[C#]
    int pageSize = 5;string orderSQL = "SELECT TOP " + pageSize + " * FROM Orders ORDER BY OrderID";
    SqlDataAdapter myDA = new SqlDataAdapter(orderSQL, nwindConn);DataSet myDS = new DataSet();
    myDA.Fill(myDS, "Orders");
      

  22.   

    拜托,这哪里是asp和asp.net的问题,明明是ado和ado.net的。
      

  23.   

    PageSize也是将数据全读出来了.
    ADO.net的方式也是全读出来再分页.
      

  24.   

    看了你的帖,真不知道该说你什么好,什么都不精通,就在那瞎叫
    我可以说你ASP也不会好到哪,你用ADDNEW的方法是比较简单,但是和insert比就效率差远了,
    另外asp的分页机制也是将符合记录的数据全部取出,然后根据pagesize进行分页
    在NET里象ASP那种分页就更简单了一个DATAGRID,加几句代码就搞定,不超过10分钟,你不会只说明你没搞懂,用存储过程插入数据更是方便的很,哎,塌实点
    ASP时代有很多的免费代码,我估计你是免费代码看多了,到NET没代码看了,就急了
      

  25.   

    一大早看见楼主 在汽车里面狂喊
    谁能告诉我为什么汽车(asp.net)没有自行车(asp)转弯那样容易啊···
    这他 妈的不是废话吗,汽车确实没有自行车转弯来的容易,但是自行车能跑汽车那么快吗?
      

  26.   

    NND,一大早看见你(xiao_p(众里寻她千百度,蓦然回首,依然如旧···) )骂你老子不知道大家都在说什么,我是什么都不懂,如果你懂就告诉我,不懂就别在那放屁1.有1000个字段,数据库是access,如何添加添加记录?2.不使用服务器表格控件,只使用html中的table,如何给access数据库分页显示?
      

  27.   

    csdn中好像能教训人的、装逼的人很多,如果你认为我问的问题很幼稚,小儿科,那就请你回答一下这小儿科的问题,如果连这小儿科的问题都回答不了,就别在这教训人,装大尾巴葱!
      

  28.   

    1,关于addnew ,其实ado.net中也是有的,下面是一个示例,操作的对象是表
    与数据库无关的,当然也支持access
    using System;
    using System.Data;
    using System.Collections.Generic;public class MyClass
    {
    public static void Main()
    {
    DataTable dt=CreateNewTable();
    DisplayDataTable(dt);
    Console.Read();
    }
    static void DisplayDataTable(DataTable dt){
    foreach(DataRowView drv in dt.DefaultView){
    Console.WriteLine("name:{0} value:{1}",drv[0],drv[1]);
    }
    }

    static DataTable CreateNewTable(){
    DataTable dt=new DataTable();
    dt.Columns.Add(new DataColumn("name",typeof(string)));
    dt.Columns.Add(new DataColumn("value",typeof(int)));
    DataRow dr;
    for(int i=0;i<100;i++){
    dr=dt.NewRow();
    dr["name"]=i.ToString("x2");
    dr["value"]=i;
    dt.Rows.Add(dr);
    }

    return dt; }

    }
      

  29.   

    楼上,这个我知道,好像你只把数据添加到了DataTable,并没有添加到数据库中
    Dim dt As DataTable = New DataTable()
      

  30.   

    同样的
    分页也一样很简单
    可以使用pagedDataSource
    using System;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Collections.Generic;public class MyClass
    {
    public static void Main()
    {
    DataTable dt=CreateNewTable();
    //DisplayDataTable(dt);
    PagedDataSource pds=new PagedDataSource();
    pds.DataSource=dt.DefaultView;
    pds.AllowPaging =true;
    pds.PageSize=15;
    pds.CurrentPageIndex=2;

    Console.WriteLine("pagedSize:{0} CurPageIndex:{1}/PageCount:{2}"
    ,pds.PageSize
    ,pds.CurrentPageIndex
    ,pds.PageCount);
    foreach(DataRowView drv in pds){
    Console.WriteLine("name:{0} value:{1}",drv[0],drv[1]);
    }
    Console.Read();
    }
    static void DisplayDataTable(DataTable dt){
    foreach(DataRowView drv in dt.DefaultView){
    Console.WriteLine("name:{0} value:{1}",drv[0],drv[1]);
    }
    }

    static DataTable CreateNewTable(){
    DataTable dt=new DataTable();
    dt.Columns.Add(new DataColumn("name",typeof(string)));
    dt.Columns.Add(new DataColumn("value",typeof(int)));
    DataRow dr;
    for(int i=0;i<100;i++){
    dr=dt.NewRow();
    dr["name"]=i.ToString("x2");
    dr["value"]=i;
    dt.Rows.Add(dr);
    }

    return dt; }

    }
      

  31.   

    回复人:OnlyVB(边城浪子) ( 一级(初级)) 信誉:100  2006-11-03 10:00:00  得分:0

    楼上,这个我知道,好像你只把数据添加到了DataTable,并没有添加到数据库中
    Dim dt As DataTable = New DataTable()你知道怎么从数据表到table
    也应该知道从table到数据表
    我为了方便举例用的是new DataTable,不依赖于具体的数据库而已
    你可以参考dbdataadapter.update方法来了解怎么使用已知的表或行集来更新数据库
    你说的其实ado.net里都有,但不再推荐你这样做而已
    大家用的少是因为它的确不好不方便
    你喜欢你一样可以用asp的方式来写asp.net也是可以的
    --如果你认为这样更有意义
      

  32.   

    csdn中的Blog的分页也没用什么控件,请问他是如何分页的?
      

  33.   

    haha 没用来吧` 还不知道 。NET 的好处哇`
      

  34.   

    楼上好多人,也不知道楼主能不能看到我发的东西,我和你一样,是初学者。
    我想你要的第一个方法应该是应该是这么写的,grmp是表名。
    // private void addnew()
    // {
    // stringstrconn="server=wshss;database=ASPNETOA;uid=sa;pwd=123";
    // SqlConnection conn=new SqlConnection(strconn);
    // string strsql="SELECT * FROM grmp";
    // conn.Open();
    // SqlDataAdapter da=new SqlDataAdapter(strsql,conn);
    // SqlCommandBuilder cb=new SqlCommandBuilder(da);
    // DataSet ds=new DataSet();
    // da.Fill(ds,"grmp");
    // DataTable dt=ds.Tables["grmp"];
    // DataRow drow=dt.NewRow();
    // drow["name"]=txtname.Text.ToString().Trim();
    // drow["sex"]=lstsex.SelectedItem.ToString();
    // drow["birthday"]=Calendar1.Text.ToString();
    // drow["duty"]=txtduty.Text.ToString().Trim();
    // drow["comname"]=txtcomname.Text.ToString().Trim();
    // drow["comaddress"]=txtcomaddress.Text.ToString().Trim();
    // drow["compost"]=txtcompost.Text.ToString().Trim();
    // drow["comtel"]=txtcomtel.Text.ToString().Trim();
    // drow["comfax"]=txtcomfax.Text.ToString().Trim();
    // drow["homeaddress"]=txthomeaddress.Text.ToString().Trim();
    // drow["homepost"]=txthomepost.Text.ToString().Trim();
    // drow["hometel"]=txthometel.Text.ToString().Trim();
    // drow["handtel"]=txthandtel.Text.ToString().Trim();
    // drow["email"]=txtemail.Text.ToString().Trim();
    // drow["qqnumber"]=txtqqnumber.Text.ToString().Trim();
    // dt.Rows.Add(drow);
    // da.Update(ds,"grmp");
    // Response.Redirect("frmgrmpindex.aspx");
    // }
    用MICROSOFT用这种方法其实是一种倒退,不知道你学没学过DAO,呵呵。一堆垃圾对象和类,
    MICROSOFT又把老古董的东西搬回来了。目的很明确,就是要垄断!
    你说的东西反应很多问题,我在一开始和你有同样的疑问,上面的那种方法在.net中很少用。
    一般的用法都是用insert into(或者update或者其它SQL)语句加上command的参数来做数据库的相关操作,
    这样比ASP中要麻烦很多,我在开始的时候也很不习惯。后来明白了一点,就是MICROSOFT逼着你用SQLSERVER的数据库,还是垄断,呵呵。又跑题了。
    用Insert into加command 的参数这种方法有一个好处,比如你在数据库设计了一个datatime的字段,然后用我在上面的方法添加,那么会报错的,但是如果用SQL语句加command参数的方面添加,会在该字段添加一个默认的值,说白了,就是容错。
    但是,好处也是很明显的,如果在虚拟主机上运行SQL语句加command参数的这种方法,无疑是对主机的数据库系统和操作系统的考验,如果主机上的虚拟主机过多,那么可想而知,你的程序代码运行的时间加上网络的延迟时间加上数据库运行的时间and so on的和,完全是在考验最终用户的忍耐力,但是用上面方法来做,DATASET是在内存中的表,内存中存在大量的表(估计是数组吧),又是对操作系统的考验。所以无论用哪个方面,但出的结论都是:你必须使用微软的数据库和操作系统和其它所需平台(微软给你做优化),如果你不用,那么,对不起,你做的东西就是垃圾。比如说,你用MS和ORACLE连接,那么无论你做的再好,都是垃圾。
    关于第二个问题:分页的问题
    MSDN中有ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconpagingthroughqueryresult.htm
    自己看吧。
    我说的不一定对,自己看怎么做吧。
      

  35.   

    to wshlxvb(酒鬼英明) 
    谢谢的你的方法,可能我的问题太幼稚了,高手不愿意回答,只有新手才理我弱弱地问一下:
    MSDN中有ms-help://MS.MSDNQTR.2003FEB.2052/cpguide/html/cpconpagingthroughqueryresult.htm在哪?
    是网上还是我的帮助上,网址怎么输入呀
      

  36.   

    csdn中的Blog的分页也没用什么控件,请问他是如何分页的?
      

  37.   

    寻找高人:
    我用Repeater控件绑定了一个数据,想要它按这样的方式显示出来怎么做?
    一页显示12个table,每行四个,多的就分页,我就的是存储过程分页,现在是怎么按这个样子显示,我急啊,置于我用table是因为里面还有布局等等
    <table>
      <tr>
        <td>
          <table><tr><td>绑定</td></tr><tr><td>绑定</td><td>绑定</td></tr></table>
        </td>
    ........
      </tr>
      <tr>
        <td><........
      </tr>
    ..........
    </table>
    求专家啊!
      

  38.   

    刚开始是这样吧?我也是刚学ASP.NET!
      

  39.   

    我是从ASP转到.NET上的,开始也是这样以为的,后来对.NET熟了,发现.NET真的比ASP方便的多.只是你的思维没有从ASP上转到.NET上.你硬是要把.NET当成ASP来用,当然会觉得很不好用了.
      

  40.   

    csdn中的Blog的分页也没用什么控件,请问他是如何分页的?
      

  41.   

    给你一个我用的,分页控件是 陕北吴旗娃 写的分页控件.#region 分页控件
    /// <summary>
    /// 分页控件绑定方法,返回数据集
    /// </summary>
    /// <param name="myPager">分页控件</param>
    /// <param name="sql">要分页的SQL语句</param>
    /// <param name="cn">数据库连接串</param>
    public DataTable myPageBind(Wuqi.Webdiyer.AspNetPager myPager,string sql,OracleX cn)
    {
      return(this.myPageBind(myPager,sql,mydata.Config.SysPageSize,cn));
    }
    /// <summary>
    /// 分页控件绑定方法,返回数据集
    /// </summary>
    /// <param name="myPager">分页控件</param>
    /// <param name="sql">要分页的SQL语句</param>
    /// <param name="cn">数据库连接串</param>
    public DataTable myPageBind(Wuqi.Webdiyer.AspNetPager myPager,string sql,int myPageSize,OracleX cn)
    {
      //求取记录总数
      int mycount = Convert.ToInt32(cn.GetOneValue("select count(*) from (" + sql + ")"));
      myPager.RecordCount = mycount;  //定义分页数量
      myPager.PageSize = myPageSize;  //设置分页控件属性
      //自定义信息存放位置
      myPager.ShowCustomInfoSection = Wuqi.Webdiyer.ShowCustomInfoSection.Left;
      //索引文本框显示方式
      myPager.ShowInputBox = Wuqi.Webdiyer.ShowInputBox.Always;
      //分页信息存放位置
      myPager.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Right;
      //显示几个页数
      myPager.NumericButtonCount = 8;
      //是否一定显示分页控件
      myPager.AlwaysShow = true;
      //使用页面提交方式
      myPager.UrlPaging = false;
      //不折行
      myPager.Wrap = false;
      //回到首页
      myPager.FirstPageText = "<img src=" + this.MyImgPath() + "/home/firstg.gif border=0 title=\"转到首页\" onmouseover=\"this.src='" + this.MyImgPath() + "/home/firstn.gif'\" onmouseout=\"this.src='" + this.MyImgPath() + "/home/firstg.gif'\">";
      //回到上一页
      myPager.PrevPageText = "<img src=" + this.MyImgPath() + "/home/prevg.gif border=0 title=\"转到上一页\" onmouseover=\"this.src='" + this.MyImgPath() + "/home/prevn.gif'\" onmouseout=\"this.src='" + this.MyImgPath() + "/home/prevg.gif'\">";
      //下一页
      myPager.NextPageText = "<img src=" + this.MyImgPath() + "/home/nextg.gif border=0 title=\"转到下一页\" onmouseover=\"this.src='" + this.MyImgPath() + "/home/nextn.gif'\" onmouseout=\"this.src='" + this.MyImgPath() + "/home/nextg.gif'\">";
      //最后页
      myPager.LastPageText = "<img src=" + this.MyImgPath() + "/home/lastg.gif border=0 title=\"转到最后页\" onmouseover=\"this.src='" + this.MyImgPath() + "/home/lastn.gif'\" onmouseout=\"this.src='" + this.MyImgPath() + "/home/lastg.gif'\">";  //以下设定用户自定义记录信息
      myPager.CustomInfoText = "第<font color='red'><b>" + myPager.CurrentPageIndex.ToString() + 
        "</b></font>页/共<font color='blue'><b>" + myPager.PageCount.ToString() + 
        "</b></font>页 每页<font color='blue'><b>" + myPager.PageSize.ToString() + 
        "</b></font>条/共<font color='blue'><b>" + myPager.RecordCount.ToString() + 
        "</b></font>条";  //根据分页数量绑定分页控件
      return(cn.GetDt(sql,(myPager.PageSize * (myPager.CurrentPageIndex - 1)), myPager.PageSize));
    }#endregion 结束分页控件
    注意事项:
    1.cn.GetOneValue:这个是自己写的根据SQL语句返回第一行第一列数据的一个方法
    2.cn.GetDt:如下:
    /// <summary>
    /// 根据开始记录号和欲显示的记录条数生成DataTable
    /// </summary>
    /// <param name="sql">传递SQL语句</param>
    /// <param name="p_start">开始记录号</param>
    /// <param name="p_rowCount">欲显示的记录条数</param>
    /// <returns>返回DataTable</returns>
    public DataTable GetDt(string sql, int p_start, int p_rowCount)
    {
      OracleDataAdapter myAdp = new OracleDataAdapter(sql, this.cn);
      DataSet ds = new DataSet();
      try
      {
        myAdp.Fill(ds,p_start, p_rowCount, "MyPageDataTable");
        return(ds.Tables[0]);
      }
      catch(OracleException ex)
      {
        throw ex;
      }
    }3.数据库是oracle,你如果不同可自行修改部分代码即可.
      

  42.   

    说明:不能使用什么控件,我显示的数据要自由控制,怎么做?
    就象csdn中的Blog的分页一样也不用什么控件,连一个Table都没有,就是使用css控制数据的显示。
      

  43.   

    ado.net真的很好用   太容易用了 一致我想在C++中也找到这样的东西结果没有~ 哈哈