zoukankan      html  css  js  c++  java
  • 基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)

    基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)

    BY: 一点一滴的Beer

    一、三种数据库的主要对比

     

    数据库类型

    特点

    Microsoft Access

    桌面数据库、数据库载体是单个文件

    Microsoft Sql Server

    基于服务器端的中型的数据

    MySql

    跨平台,开源,价格便宜

     

     

      关于三种数据库的详情,请参考本文:

         建立网站如何选择适合自己的数据库

        http://database.ctocio.com.cn/tips/395/7631395.shtml

      三种数据库各有优缺点。就笔者目前的体会来说一下三种数据库的用途:

        Access:数据库载体是单个*.mdb文件,而且可以用Microsoft Access以文档的方式打开,拥有良好的数据库构架,方便程序访问,一般用于小型的桌面应用程序的数据存储载体。

        MS Sql Server:基于网络访问,比较适合选作为B/S,C/S程序的数据库。

        MySql:其主要特点、用法和MS Sql Server比较类似,最大的优点就是开源,便宜。

      总述:Access和MS Sql Server比较容易学习和入门,但是如果用作商业用途的时候,可以选用MySql,它们用法类似,但价格却区别很大。^_^


    二、用C#实现对三种数据库的访问

    访问数据库所需要的命名空间:

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;

    using System.Data;//DataSet等数据表

    using System.Data.OleDb;//Access本地数据库
    using System.Data.SqlClient;//Microsoft Sql Server数据库
    using MySql.Data.MySqlClient;//MySql数据库访问--要先对MySql.Data.dll文件进行引用

    2.1 对Access数据库文件*.mdb文件进行访问

    代码
    /// <summary>
    /// 得到*.mdb文件的相对路径
    /// </summary>
    /// <returns></returns>
    private static string GetFilePath()
    {
    string filepath = AppDomain.CurrentDomain.BaseDirectory;
    int binPos = filepath.IndexOf("bin");
    string binPath = filepath.Remove(binPos);
    return binPath;
    }

    /// <summary>
    /// 本地数据库系统Microsoft Access 连接访问演示
    /// 要求:将ACCESS数据库文件*.mdb放到bin根目录下面
    /// </summary>
    private static  void AccessDemo()
    {
    string strBinPath = GetFilePath();

    //本地数据库文件的连接
    OleDbConnection aConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+strBinPath+"bin\\first.mdb");
    string select = "select * from libBooks";

    //数据库数据控件显示
    aConnection.Open();
    OleDbDataAdapter da
    = new OleDbDataAdapter(select, aConnection);
    DataSet ds
    = new DataSet();
    da.Fill(ds,
    "图书馆");
    DataTable dt
    = ds.Tables[0];//数据集的第0张表格
    }

    2.2 对MsSql Server数据库进行访问

    代码
    /// <summary>
    /// Microsoft Sql Server 连接访问演示(以访问本地数据库服务为例)
    /// 要求:在服务器上安装Microsoft Sql 2005
    /// </summary>
    private static void MsSqlDemo()
    {
    try
    {
    string sql = "select * from Employees";

    //访问MySql数据库服务器所需要的登录信息:根据具体情况来定
    string serverIP = "127.0.0.1";//"127.0.0.1" = "localhost"
    string userID = "sa";//访问数据库服务的用户名
    string password = "";//用户密码
    string dataBaseName = "Northwind";//要访问的数据库名称


    SqlConnection sqlConn
    = new SqlConnection("Server=" + serverIP + ";Uid=" + userID + ";Pwd=" + password + ";Database=" + dataBaseName);
    sqlConn.Open();
    SqlDataAdapter mda
    = new SqlDataAdapter(sql, sqlConn);
    DataSet ds
    = new DataSet();
    mda.Fill(ds,
    "table1");
    DataTable dt
    = ds.Tables[0];
    sqlConn.Close();

    }
    catch (SqlException se)
    {
    Console.WriteLine(
    "Database operation errors : " + se.StackTrace);

    }

    }

    2.3 对MySql数据库进行访问

    代码
    /// <summary>
    ///开源数据库系统 MySql 连接访问演示(以访问本地数据库服务为例)
    /// 要求:在服务器上安装MySql数据库
    /// </summary>
    private static void MySqlDemo()
    {
    try
    {
    string sql = "select * from help_keyword";

    //访问MySql数据库服务器所需要的登录信息:根据具体情况来定
    string serverIP = "127.0.0.1";//"127.0.0.1" = "localhost"
    string userID = "root";//访问数据库服务的用户名
    string password = "z";//用户密码
    string dataBaseName = "mysql";//要访问的数据库名称


    MySqlConnection mySqlConn
    = new MySqlConnection("Server="+serverIP+";User Id="+userID+";Password="+password+";Persist Security Info=True;Database="+dataBaseName);
    mySqlConn.Open();
    MySqlDataAdapter mda
    = new MySqlDataAdapter(sql, mySqlConn);
    DataSet ds
    = new DataSet();
    mda.Fill(ds,
    "table1");
    DataTable dt
    = ds.Tables[0];
    mySqlConn.Close();

    }
    catch (MySqlException se)
    {
    Console.WriteLine(
    "Database operation errors : " + se.StackTrace);

    }
    }

      通过上面对三种数据库的访问方式可以发现,访问数据库的流程基本上一样:

      创建连接―>打开连接―>根据查询语句创建数据库适配器―>提取数据到DataSet中―>完成数据的访问并关闭连接

      所不同的只是在函数名称的前缀上略作修改而已,所以三种数据库的操作程序很好移植。

    2.4 更新数据库记录

      因为三种数据库的操作流程基本类似,所以就以更新Access数据库文件为例,其余两种数据库类似。

    代码
    /// <summary>
    /// 以Access为例,向数据库中更新数据 方法演示
    /// </summary>
    private static void AccessInsertData()
    {
    string strBinPath = GetFilePath();

    OleDbConnection aConnection
    = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strBinPath + "bin\\first.mdb");

    aConnection.Open();

    //通过SQL查询语句,直接插入单条记录------直接对硬盘上的数据源进行操作。

    OleDbCommand command
    = new
    OleDbCommand(
    "INSERT INTO libBooks VALUES('插入字段','Access数据库演示',2000,3000)", aConnection);
    command.ExecuteNonQuery();

    aConnection.Close();
    }

    clip_image002

    ACCESS数据文件效果如图

     


    关于附件的说明: 

    开发语言:C#

    开发环境:VS2005

    运行环境:.NET Framework 2.0

    因为本演示程序涉及到数据库编程,用户除了要安装VS2005或者更高级的开发环境外,还需要安装必要的数据库平台:

    Access:只要有*.mdb文件即可。当然如果要查看数据,最好还是安装Microsoft Access

    MsSql Server:安装Microsoft Sql Server

    MySql:安装MySql(可以到官网上下载免费版,不过是基于DOS的,然后再下载一个Navicat for MySQL可以实现可视化操作查看)

     

    附件地址: DataBaseDemo.rar

    ------------------------------------------------------------------

    Author:一点一滴的Beer

    Email /Gtalk:dreamzsm@gmail.com

    From:http://www.cnblogs.com/beer

    Notes:欢迎转贴,但请在页面中加个链接注明出处,就当是对作者的一点小鼓励吧^_^

    Time:2010-7-27

  • 相关阅读:
    Android.mk简介
    signal函数的原型声明void (*signal(int signo, void (*fun(int))))(int)分析
    关于fork()函数的精辟分析
    [Ubuntu]win10卸载ubuntu
    [Shell]清空文件内容 | 使用curl进行post请求
    【Shell】在字符串中引用变量
    [Jenkins]视图
    [Jenkins]执行git push命令报错fatal: could not read Username forxxx| 配置jenkins使用ssh方式连接git
    [MAC]Permission denied, please try again.
    [Shell] 函数的应用
  • 原文地址:https://www.cnblogs.com/beer/p/1786175.html
Copyright © 2011-2022 走看看