注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

Windows应用高级编程笔记(8)  

2011-10-06 20:56:45|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近一直比较忙,学习的时间就显得比较少了,刚忙完一个小项目,又淘到一本好书,也是红皮书系列的,中文翻译是《Windows应用高级编程——C#编程篇》,翻译版由清华大学出版社出版。这本书说的比较详细,将许多书籍中细微末节的地方都说的比较清楚,采用面向对象的原则来介绍如何进行Windows编程,虽然带有“高级”字样,但是阐述详细,步骤清晰,对于一个初学者也是能够看得懂的。

Windows应用高级编程笔记(1) - Castor - 趁年轻,多折腾~~

===============================================================================

第7章 链接数据库
连接数据库
将连接字符串传递给System.Data.OleDb.OleDbConnection类的一个新实例,然后调用Open方法建立连接。可以通过State属性检查连接状态。
DataSet:包含了储存在System.Data,DataTable对象中表的集合,该集合可以通过DataSet类的Tables属性访问。
DataTable包含了列定义集合,是System.Data.DataColumn对象的一个集合,可以使用Columns属性访问。DataTable也包含了行集,即实际的数据,以System.Data.DataRow对象的集合来存储,可以使用DataTable类的Rows属性访问。
DataGrid类(现在改用DataGridView类)封装了所有这些功能。给该类的DataSource属性传递一个DataSet即可。
为了让DataSet从数据库连接中获取数据,需要使用一个适配器类OleDbDataAdapter,适配器用来保存操作数据库的SQL命令。适配器类的Fill方法向对象填充数据库中的数据。
适配器中的属性:TableDirect、Text、StoredProcedure
一个查询的例子:
假设Form1中已经有如下变量,并做好了初始话的工作。
string ConnectionString;
OleDbConnection conn;
public Form1()
{
    InitializeComponent();
    ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Northwind.mdb";
}
下面是查询和填充的代码:
private void button1_Click(object sender, EventArgs e)
{
    OleDbDataAdapter da;
    OleDbCommand cmd;
    try
    {
        conn = new OleDbConnection(ConnectionString);
        conn.Open();

        cmd = conn.CreateCommand();
        cmd.CommandText = "Customers";
        cmd.CommandType = CommandType.TableDirect;
        da = new OleDbDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0];
        conn.Close();
       
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

Windows应用高级编程笔记(8) - Castor - 趁年轻,多折腾~~

 原书中直接设置dataGridView1.DataSource = ds;这个可能是DataGrid中可以的,但是在DataGridView中似乎不行了。
数据的修改。
如果将DataGridView1的编辑启用:

Windows应用高级编程笔记(8) - Castor - 趁年轻,多折腾~~

< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />给代码添加如下事件相应:
private void button2_Click(object sender, EventArgs e)
{
    try
    {
        conn = new OleDbConnection(ConnectionString);
        conn.Open();
        OleDbCommand cmd = conn.CreateCommand();
        cmd.CommandText = "Customers";
        cmd.CommandType = CommandType.TableDirect;
        OleDbDataAdapter da = new OleDbDataAdapter(cmd);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(da);
        DataTable dt = dataGridView1.DataSource as DataTable;
        DataSet ds = dt.DataSet;
        da.Update(ds);
    }
    catch (System.Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


这个时候可以修改非主键的任何值,然后点击按钮2就可以保存。注意:修改主键会出现报错:

Windows应用高级编程笔记(8) - Castor - 趁年轻,多折腾~~

 搞不懂这种报错是什么意义,可能是怕主键冲突吧。

  评论这张
 
阅读(711)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016