未用C#时,习惯于用ADO做软件,但学了C#之后,想用WINFORM做些MIS系统,发现那个ADO已经不知去向了,只有ADO.NET选择,但是又发现ADO.NET做简单的MIS好象很烦以前,一个表放到DATAGRID中,用户输入数据后,就可以马上更新了。现在的.NET,又要用适配器的update方法去保存到数据库中,挺烦哦。用ADO时,一个表添加到记录中,如果这表有定义约束,而且发生重复记录时,它就可以马上引发事件通知客户端程序或显示出错。但ADO.NET中,要用适配器的fill填到数据库,才出现这些东西。晕,C#中已经没有ado的数据组件,MS这样是不是太过份了?逼我们用ado.net,大家会不会觉得用ADO.NET做些小数据库太麻烦了??

解决方案 »

  1.   

    你可以不使用apdater更新数据库,而直接使用OleDbCommand,或OralceCommand,SqlCommand等。
      

  2.   

    能不能详细一点呀,不明白。如果不用数据适配器。又如果去绑定数据?还有,数据集是一定要用的吧。不可能象ADO时一样,使用Recordset的。
      

  3.   

    是不好,尤其是没有通用基类,基于接口的设计就困难。另外象oracle、sqlserver的数据字段类型不一致,可移植性下降。
      

  4.   

    ADO.NET的原本是为网络应用设计的,可我的使用中也并没有觉得有革命性的提高,可能设计者和我们的想法是不同的,别人领导着软件的发展,我们只有去适应!
      

  5.   

    真的挺烦。近斯正在搞一个crm,,唉,不爽,操作起来挺烦,可能是还没太理解,,适应就好了。
      

  6.   

    兄弟其实很简单,只是你还没有精通ADO。NET也许在过段时间,你就不会这么认为了。
      

  7.   

    以前更新时只能用sql语句,ado.net不是。
    相反,我以为有了ado.net比以前方便多了。
      

  8.   

    Ado.Net应该说更强大吧,只是你没有习惯。
    如果一定要用ADO,在.NET中也是可以的
      

  9.   

    就是了。
    你还没用熟而已。
    Ado.net比Ado强大,很多地方还很方便呢。
      

  10.   

    我到是喜欢用ADO。NET,挺方便的。你可以把对数据库的操作写成一个类,以后在用的时候直接调用就可以了。
    我这里就有一个,如果要的话就发给你。
      

  11.   

    应该还是比较方便的。
    http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx
      

  12.   

    大家试想,如果我要用ADO,但是.net中连一个ADO的控件也没有,用ADO做数据库,无疑先由自己做开发一堆组件,再做数据库,多慢!!
      

  13.   

    1.首先用ADO.NET 是没有原来的ADO那么访问快捷,方便(但是熟悉了就会发现他提供轻量级的dataReader和重量级的DataSet两种访问方式),而且支持的功能更强大(特别适合在网络下的应用)
    程序效率性能会高很多的。2.在.NET中是可以继续用ADO的,ADO说到底也是一种COM 组建罢了,你应用进来不也可以吗?
    不过用ADO的访问,配合.NET下的数据显示控件(如:DBGrid)显得有点别扭。3.兄弟,去学学ADO.NET吧,顺应时代的潮流哦~
      

  14.   

    如果只是读取填充一页的记录,用数据阅读器类也行啊.比如sqlDataReader,OleDbReader,OdbcDataReader.工作方式就像消防水龙----提供一个打开的渠道,只读的记录从中流过,客户从前向后一个一个地读它们.
      

  15.   

    跟我一样,处于
    ADO--->ADO.Net的过程中
    是很麻烦,但我相信ado.net 有其强大之处. 
    共同进步
      

  16.   

    你不喜欢直接用ADO.NET你可以使用现成的ApplicationBlock啊,总不会有比这个更方便了吧???
      

  17.   

    一开始有点不习惯,现在习惯了,觉得新的ADO.NET的方式还是很好用的
      

  18.   

    ADO。NET 可以把表的关系也映射在DATASET中一旦违反约束也会报错的。
      

  19.   

    一开始有点不习惯,现在习惯了,觉得新的ADO.NET的方式还是很好用的
    同意呵呵
      

  20.   

    我觉得很爽啊,比ADO好用多了。
      

  21.   

    ADO.NET爽就一个字,我现在提供一个方法。
    public static DataSet ExecuteDataset(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
    {
    if( connection == null ) throw new ArgumentNullException( "connection" ); // Create a command and prepare it for execution
    SqlCommand cmd = new SqlCommand();
    bool mustCloseConnection = false;
    PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters, out mustCloseConnection );
         ApplicationLog.WriteInfo(commandText + GetStringParameter(commandParameters));
    // Create the DataAdapter & DataSet
    using( SqlDataAdapter da = new SqlDataAdapter(cmd) )
    {
    DataSet ds = new DataSet(); // Fill the DataSet using default values for DataTable names, etc
    da.Fill(ds);

    // Detach the SqlParameters from the command object, so they can be used again
    cmd.Parameters.Clear(); if( mustCloseConnection )
    connection.Close(); // Return the dataset
    return ds;
    }
    }
      

  22.   

    将常用的工具打包到一个DLL中,各种软件都能用,比如数据库连接,得到一个数据集等,这样辛苦一次,以后非常方便,更新DLL文件后,所有项目都可以用最新的方法了
      

  23.   

    我也是,感到ado.net不错啊,写成类操作起来很方面啊
      

  24.   

    首先说明C#是可以使用ADO的,ADO是个COM组件,必须添加对COM组件的引用,方法是项目-->添加引用-->COM-->Microsoft ActiveX Data Objects 2.x library;    习惯了ADO.NET,你会觉得也很好使,且DataReader和Command配合使用能完成大多数工作,关键是DataReader的系统开销要比ADO的RecordSet小的多
      

  25.   

    更新数据库直接使用SQL语句也可以啊其实我到觉得ADO。NET用起来比较方便
      

  26.   

    发表一下个人意义啊  大家别笑我没见识   推荐楼主买一本ADO.NET技术内幕看一看  我这里有一本  里面主要讲的是ADO.NET  不过其中加入了许多ADO  DAO   的知识  与ADO.NET之间的差异     还有一些解决方案   楼主可以很容易的看来ADO.NET的优点  与以前的数据访问技术差异  我认为这本书很的很不错  不过其中有很多地方不明白  比如书中说的ADO的一些东西   因为以前并没有用过
      

  27.   

    ADO.Net比ADO方便,功能也强大,可订制性也强,关键是理解其Dataset的内涵(内存中数据库),并熟悉各种类的使用方法。
      

  28.   

    to 楼主:
        你现在为什么需要在进行数据库操作的时候写这么多东西,你知道吗?因为你的程序没有分层,没有按照模块化的思想去走,所以你没写一次数据处理,就要写这么多东西,所以你会觉得麻烦。
        我现在的程序有一个层叫做数据处理层,是可以复用的,就是不管什么样的数据库和表,你只要把这个层的基类放上去,当进行数据处理的时候,你要做的只是调用几个简单的方法而已,其他的adapter和command什么的都不要自己建立。
        这就是ado.net的好处。
      

  29.   

    我刚开始和楼主一样,习惯用ADO(现在用ASP时也用),没了recordset 很不习惯,
    后来用用ADO.NET,慢慢就习惯了,关键是面向对象思想和分层架构,ADO.NET确实
    比较好
      

  30.   

    呵呵,那学学O/R mapping吧,既时髦,又可以解决你的问题。呵呵
    推荐ibastia或nHebernate
      

  31.   

    那楼主可以选择Sybase的PowerBuilder,做MIS快。对于打印支持的也不错。ADO.net挺好用的,有很多地方都比ADO好用,可能楼原来用ADO习惯了,我以前做PowerBuilder现在直接学习ADO.net感觉也不错。
      

  32.   

    偶觉得.net对数据的操作更安全些,
    关键是楼主ADO.net用的时间不长,时间长了你也就习惯了。^_^
      

  33.   

    用c#的数据适配器配置向导(SqlDataAdapter)连接就可以很轻松的搞定了
      

  34.   

    连接数据库 新建一个ASP.NET项目或Windows.NET应用程序,因为二者的数据库存取程序是相同的。将服务器资源管理器中的数据连接拖至新建的Web Form上即可,这时自动生成了一个连接字符串如下:this.sqlConnection1.ConnectionString= "data source=WHOAMI;
    initial catalog=tyjdb;
    integrated security=SSPI;
    persist security info=False;
    workstation id=WHOAMI;
    packet size=4096";
    其中WHOAMI为笔者的服务器名。 
    选取工具箱中的SqlDataAdapter并拖至该Web Form,提示时选取tyjdb的数据连接,选择使用SQL语句访问数据库,生成SQL语句时只填入SELECTFROM ADDRESS,确认完成即可。程序生成代码如下:protected System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
    //存取数据库的主要类
    protected System.Data.SqlClient.SqlCommand sqlSelectCommand1;
    //SQL语句处理的类
    protected System.Data.SqlClient.SqlConnection sqlConnection1;
    //连接数据库的类
    在InitializeComponent()中有如下声明:
    this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
    this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
    this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
    this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
    this.sqlSelectCommand1.CommandText = "SELECT name, email, age, address FROM address";
    this.sqlSelectCommand1.Connection = this.sqlConnection1; 
    为使Table中数据能在Web Form中显示,加入一个DataGrid控件至Web Form上,并在Page_Init中加入如下语句:sqlConnection1.Open();
    //打开数据库连接
    DataSet objDataset;
    //新建一个放数据的DataSet
    objDataset=new DataSet();
    sqlDataAdapter1.Fill(objDataset, "address");
    //将数据填入DataSet
    DataGrid1.DataSource=objDataset.Tables["address"].DefaultView;
    //关联DataSet和DataGrid
    DataGrid1.DataBind();
    //绑定数据
    sqlConnection1.Close();
    //关闭数据库连接 
    编译执行后Web Form已可将数据库中数据显示在DataGrid中了。增加数据 若想增加数据库数据时,我们只需在Web Form上新增对应字段数量个数的TextBox,并新增一个按键,接着为该按键增加Click事件,具体代码如下:sqlInsertCommand1.Parameters["@name"].Value=TextBox1.Text;
    //将TextBox赋值给对应参数
    sqlInsertCommand1.Parameters["@email"].Value=TextBox2.Text;
    sqlInsertCommand1.Parameters["@age"].Value=TextBox3.Text;
    sqlInsertCommand1.Parameters["@address"].Value=TextBox4.Text;
    sqlInsertCommand1.Connection.Open();
    //打开连接
    sqlInsertCommand1.ExecuteNonQuery();
    //执行Insert语句
    sqlInsertCommand1.Connection.Close();
    //关闭连接
    sqlConnection1.Open();
    DataSet objDataset;
    //下面程序段更新DataGrid
    objDataset=new DataSet();
    sqlDataAdapter1.Fill(objDataset, "address");
    DataGrid1.DataSource=objDataset.Tables["address"].DefaultView;
    DataGrid1.DataBind(); 
    执行这段程序时,只需在TextBox中填入要添加的记录字段的值,然后按该按键即可执行添加功能。删除数据 若想删除数据库数据时,我们则需在Web Form上新增一个TextBox5及一个按键,为该按键增加如下代码:SqlCommand sqlDeleteCommand1 = new System.Data.SqlClient.SqlCommand();
    //声明Sql Command类对象
    this.sqlDataAdapter1.DeleteCommand = sqlDeleteCommand1;
    sqlDeleteCommand1.CommandText="DELETE FROM ADDRESS WHERE NAME='"+TextBox5.Text+"'";
    //SQL语句
    sqlDeleteCommand1.Connection = this.sqlConnection1;
    //声明使用的数据连接
    sqlDeleteCommand1.Connection.Open();
    sqlDeleteCommand1.ExecuteNonQuery();
    //执行该SQL语句
    sqlDeleteCommand1.Connection.Close(); 
    执行这段程序时,只需在TextBox5中填入要删除的记录name字段的值,然后按该按键即可执行删除功能。习惯就好了 朋友!!!!