zoukankan      html  css  js  c++  java
  • c#操作Access[下]

    < type="text/JavaScript"> < src="http://a.alimama.cn/inf.js" type="text/javascript">

    话接上回。

    介绍之前先介绍一个结构体。因为以下函数都要用到这个结构体。

    view plaincopy to clipboardprint?
    //普通的节点   
    public struct Node  
    {  
        private string nodeType;  
        public string NodeType//表的字段名   
        {  
            set { nodeType = value; }  
            get { return nodeType; }  
        }  
     
        private string nodeValue;  
        public string NodeValue//具体的值   
        {  
            set { nodeValue = value; }  
            get { return nodeValue; }  
        }  
    }  
     
    //照片节点   
    public struct PictureNode  
    {  
        private string nodeType;  
        public string NodeType//照片的列名   
        {  
            set { nodeType = value; }  
            get { return nodeType; }  
        }  
     
        private byte[] nodeValue;  
        public byte[] NodeValue//照片的值,注意类型   
        {  
            set { nodeValue = value; }  
            get { return nodeValue; }  
        }  

        //普通的节点
        public struct Node
        {
            private string nodeType;
            public string NodeType//表的字段名
            {
                set { nodeType = value; }
                get { return nodeType; }
            }

            private string nodeValue;
            public string NodeValue//具体的值
            {
                set { nodeValue = value; }
                get { return nodeValue; }
            }
        }

        //照片节点
        public struct PictureNode
        {
            private string nodeType;
            public string NodeType//照片的列名
            {
                set { nodeType = value; }
                get { return nodeType; }
            }

            private byte[] nodeValue;
            public byte[] NodeValue//照片的值,注意类型
            {
                set { nodeValue = value; }
                get { return nodeValue; }
            }
        }

    具体就用不着多加描述了吧!继续看问题点。

    1.向table中插入数据(按行插入,如果需要插入多条请自己组织这个函数就ok了),其中的 insertArray存储的是一系列Node,pictureNode是PictureNode。
    view plaincopy to clipboardprint?
    //插入数据   
      public static bool InsertRow( string mdbPath, string tableName, ArrayList insertArray,   
           PictureNode pictureNode, ref string errinfo)  
      {  
          try 
          {  
              //1、建立连接   
              string strConn  
                  = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";  
              OleDbConnection odcConnection = new OleDbConnection(strConn);  
              //2、打开连接   
              odcConnection.Open();  
     
              string str_col = "";  
              int size_col = insertArray.Count;  
              for (int i = 0; i < size_col; i++)  
              {  
                  Node vipNode = new Node();  
                  vipNode = (Node)insertArray[i];  
                  str_col += vipNode.NodeType + ",";  
              }  
              str_col = str_col.TrimEnd(',');  
     
     
              int size_row = insertArray.Count;  
              string str_row = "";  
              for (int i = 0; i < size_row; i++)  
              {  
                  Node vipNode = new Node();  
                  vipNode = (Node)insertArray[i];  
                  string v = vipNode.NodeValue.ToString();  
                  v = DealString(v);  
                  if (v == "")  
                  {  
                      str_row += "null" + ',';  
                  }  
                  else 
                  {  
                      str_row += "'" + v + "'" + ',';  
                  }  
              }  
              str_row = str_row.TrimEnd(',');  
              if (pictureNode != null && pictureNode.NodeValue != null)  
              {  
                  str_col += ',' + pictureNode.NodeType;  
                  str_row += ",@Image";  
              }  
              string sql = "insert into " + tableName + @" (" + str_col + ") values" + @"(" + str_row + ")";  
              OleDbCommand odCommand = new OleDbCommand(sql, odcConnection);  
              if (pictureNode != null && pictureNode.NodeValue != null)  
              {  
                  odCommand.Parameters.Add("@Image", OleDbType.VarBinary, pictureNode.NodeValue.Length).Value = pictureNode.NodeValue;  
              }  
              odCommand.ExecuteNonQuery();  
              odcConnection.Close();  
              return true;  
          }  
          catch (Exception err)  
          {  
              errinfo =  err.Message;  
              return false;  
          }  
      } 
          //插入数据
            public static bool InsertRow( string mdbPath, string tableName, ArrayList insertArray,
                 PictureNode pictureNode, ref string errinfo)
            {
                try
                {
                    //1、建立连接
                    string strConn
                        = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
                    OleDbConnection odcConnection = new OleDbConnection(strConn);
                    //2、打开连接
                    odcConnection.Open();

                    string str_col = "";
                    int size_col = insertArray.Count;
                    for (int i = 0; i < size_col; i++)
                    {
                        Node vipNode = new Node();
                        vipNode = (Node)insertArray[i];
                        str_col += vipNode.NodeType + ",";
                    }
                    str_col = str_col.TrimEnd(',');


                    int size_row = insertArray.Count;
                    string str_row = "";
                    for (int i = 0; i < size_row; i++)
                    {
                        Node vipNode = new Node();
                        vipNode = (Node)insertArray[i];
                        string v = vipNode.NodeValue.ToString();
                        v = DealString(v);
                        if (v == "")
                        {
                            str_row += "null" + ',';
                        }
                        else
                        {
                            str_row += "'" + v + "'" + ',';
                        }
                    }
                    str_row = str_row.TrimEnd(',');
                    if (pictureNode != null && pictureNode.NodeValue != null)
                    {
                        str_col += ',' + pictureNode.NodeType;
                        str_row += ",@Image";
                    }
                    string sql = "insert into " + tableName + @" (" + str_col + ") values" + @"(" + str_row + ")";
                    OleDbCommand odCommand = new OleDbCommand(sql, odcConnection);
                    if (pictureNode != null && pictureNode.NodeValue != null)
                    {
                        odCommand.Parameters.Add("@Image", OleDbType.VarBinary, pictureNode.NodeValue.Length).Value = pictureNode.NodeValue;
                    }
                    odCommand.ExecuteNonQuery();
                    odcConnection.Close();
                    return true;
                }
                catch (Exception err)
                {
                    errinfo =  err.Message;
                    return false;
                }
            }

    2.更新一行的数据(与插入类似)

    view plaincopy to clipboardprint?
    //更新一行数据   
     public static bool UpdateRow(string mdbPath, string tableName,   
         Node keyNode,ArrayList insertArray,PictureNode pictureNode, ref string errinfo)  
     {  
         try 
         {  
             //1、建立连接   
             string strConn  
                 = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";  
             OleDbConnection odcConnection = new OleDbConnection(strConn);  
             //2、打开连接   
             odcConnection.Open();  
     
             int size = insertArray.Count;  
             string str = "";  
             for (int i = 0; i < size; i++)  
             {  
                 Node node = new Node();  
                 node = (Node)insertArray[i];  
                 string v = node.NodeValue.ToString();  
                 v = DealString(v);  
                 str += node.NodeType + " = ";  
                 if (v == "")  
                 {  
                     str += "null" + ',';  
                 }  
                 else 
                 {  
                     str += "'" + v + "'" + ',';  
                 }  
                   
             }  
             str = str.TrimEnd(',');  
             if (pictureNode.NodeValue != null)  
             {  
                 str += ',' + pictureNode.NodeType;  
                 str += " = @Image";  
             }  
             string sql = "update " + tableName + " set " + str +  
                 " where " + keyNode.NodeType + " = " + "'" + keyNode.NodeValue + "'";  
             OleDbCommand odCommand = new OleDbCommand(sql, odcConnection);  
             if (pictureNode.NodeValue != null)  
             {  
                 odCommand.Parameters.Add("@Image", OleDbType.VarBinary, pictureNode.NodeValue.Length).Value = pictureNode.NodeValue;  
             }  
             odCommand.ExecuteNonQuery();  
             odcConnection.Close();  
             return true;  
         }  
         catch (Exception err)  
         {  
             errinfo = err.Message;  
             return false;  
         }  
     } 
           //更新一行数据
            public static bool UpdateRow(string mdbPath, string tableName,
                Node keyNode,ArrayList insertArray,PictureNode pictureNode, ref string errinfo)
            {
                try
                {
                    //1、建立连接
                    string strConn
                        = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
                    OleDbConnection odcConnection = new OleDbConnection(strConn);
                    //2、打开连接
                    odcConnection.Open();

                    int size = insertArray.Count;
                    string str = "";
                    for (int i = 0; i < size; i++)
                    {
                        Node node = new Node();
                        node = (Node)insertArray[i];
                        string v = node.NodeValue.ToString();
                        v = DealString(v);
                        str += node.NodeType + " = ";
                        if (v == "")
                        {
                            str += "null" + ',';
                        }
                        else
                        {
                            str += "'" + v + "'" + ',';
                        }
                       
                    }
                    str = str.TrimEnd(',');
                    if (pictureNode.NodeValue != null)
                    {
                        str += ',' + pictureNode.NodeType;
                        str += " = @Image";
                    }
                    string sql = "update " + tableName + " set " + str +
                        " where " + keyNode.NodeType + " = " + "'" + keyNode.NodeValue + "'";
                    OleDbCommand odCommand = new OleDbCommand(sql, odcConnection);
                    if (pictureNode.NodeValue != null)
                    {
                        odCommand.Parameters.Add("@Image", OleDbType.VarBinary, pictureNode.NodeValue.Length).Value = pictureNode.NodeValue;
                    }
                    odCommand.ExecuteNonQuery();
                    odcConnection.Close();
                    return true;
                }
                catch (Exception err)
                {
                    errinfo = err.Message;
                    return false;
                }
            }

    3.  插入图片数据.

    view plaincopy to clipboardprint?
    //插入图片数据   
     public static bool InsertPictureToMDB(string mdbPath,  string tableName,Node keyNode,  
         PictureNode pictureNode,ref string errinfo)  
     {  
         try 
         {  
             //1、建立连接   
             string strConn  
                 = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";  
             OleDbConnection odcConnection = new OleDbConnection(strConn);  
             //2、打开连接   
             odcConnection.Open();  
             string sql = @"update " + tableName + " set " + pictureNode.NodeType + "=" 
                 + "@Image where " + keyNode.NodeType + "=" + "'"+keyNode.NodeValue+"'";  
             OleDbCommand comm = new OleDbCommand(sql, odcConnection);  
             byte[] pic = pictureNode.NodeValue;  
             comm.Parameters.Add("@Image", OleDbType.VarBinary, pic.Length).Value = pic;  
             comm.ExecuteNonQuery();  
             odcConnection.Close();  
             return true;  
         }  
         catch (Exception err)  
         {  
             errinfo = err.Message;  
             return false;  
         }  
     } 
           //插入图片数据
            public static bool InsertPictureToMDB(string mdbPath,  string tableName,Node keyNode,
                PictureNode pictureNode,ref string errinfo)
            {
                try
                {
                    //1、建立连接
                    string strConn
                        = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
                    OleDbConnection odcConnection = new OleDbConnection(strConn);
                    //2、打开连接
                    odcConnection.Open();
                    string sql = @"update " + tableName + " set " + pictureNode.NodeType + "="
                        + "@Image where " + keyNode.NodeType + "=" + "'"+keyNode.NodeValue+"'";
                    OleDbCommand comm = new OleDbCommand(sql, odcConnection);
                    byte[] pic = pictureNode.NodeValue;
                    comm.Parameters.Add("@Image", OleDbType.VarBinary, pic.Length).Value = pic;
                    comm.ExecuteNonQuery();
                    odcConnection.Close();
                    return true;
                }
                catch (Exception err)
                {
                    errinfo = err.Message;
                    return false;
                }
            }

    4.修改mdb的一条数据.

    view plaincopy to clipboardprint?
    //修改mdb的一条数据   
    public static bool UpdateMDBNode( string tableName, Node keyNode,  
        Node saveNode, ref string errinfo)  
    {  
        try 
        {  
            //1、建立连接   
            string strConn  
                = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";  
            OleDbConnection odcConnection = new OleDbConnection(strConn);  
            //2、打开连接   
            odcConnection.Open();  
              
            string sql = @"update "+ tableName+" set " + saveNode.NodeType + " = '" + saveNode.NodeValue+  
                "' where " + keyNode.NodeType + " = " + "'" + keyNode.NodeValue + "'";  
            OleDbCommand comm = new OleDbCommand(sql, odcConnection);  
            comm.ExecuteNonQuery();  
            odcConnection.Close();  
            return true;  
        }  
        catch (Exception err)  
        {  
            errinfo = err.Message;  
            return false;  
        }  

            //修改mdb的一条数据
            public static bool UpdateMDBNode( string tableName, Node keyNode,
                Node saveNode, ref string errinfo)
            {
                try
                {
                    //1、建立连接
                    string strConn
                        = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
                    OleDbConnection odcConnection = new OleDbConnection(strConn);
                    //2、打开连接
                    odcConnection.Open();
                   
                    string sql = @"update "+ tableName+" set " + saveNode.NodeType + " = '" + saveNode.NodeValue+
                        "' where " + keyNode.NodeType + " = " + "'" + keyNode.NodeValue + "'";
                    OleDbCommand comm = new OleDbCommand(sql, odcConnection);
                    comm.ExecuteNonQuery();
                    odcConnection.Close();
                    return true;
                }
                catch (Exception err)
                {
                    errinfo = err.Message;
                    return false;
                }
            }

    5.从mdb中获得照片

    view plaincopy to clipboardprint?
    //从mdb中获得照片   
        public static byte[] GetImageFromMDB( string tableName, Node keyNode)  
        {  
            try 
            {  
                string sql = "Select 照片 From " + tableName +  
                    " member Where " + keyNode.NodeType + " = " 
                    + "'" + keyNode.NodeValue + "'";  
                string strConn  
                    = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";  
                OleDbConnection odcConnection = new OleDbConnection(strConn);  
                //2、打开连接   
                odcConnection.Open();  
                OleDbCommand comm = new OleDbCommand(sql, odcConnection);  
                OleDbDataReader sdr = comm.ExecuteReader();  
                sdr.Read();  
     
                byte[] pic = (byte[])sdr[0];  
                sdr.Close();  
                odcConnection.Close();  
                return pic;  
            }  
            catch   
            {  
                return null;  
            }  
        } 
        //从mdb中获得照片
            public static byte[] GetImageFromMDB( string tableName, Node keyNode)
            {
                try
                {
                    string sql = "Select 照片 From " + tableName +
                        " member Where " + keyNode.NodeType + " = "
                        + "'" + keyNode.NodeValue + "'";
                    string strConn
                        = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=haoren";
                    OleDbConnection odcConnection = new OleDbConnection(strConn);
                    //2、打开连接
                    odcConnection.Open();
                    OleDbCommand comm = new OleDbCommand(sql, odcConnection);
                    OleDbDataReader sdr = comm.ExecuteReader();
                    sdr.Read();

                    byte[] pic = (byte[])sdr[0];
                    sdr.Close();
                    odcConnection.Close();
                    return pic;
                }
                catch
                {
                    return null;
                }
            }

    到此以上描述问题,全部解决。这些程序代码都在net2005下测试通过。希望能给大家带来一些帮助。

    补充一句:转载的朋友请一定注明出处谢谢!半支烟阿杰 http://blog.csdn.net/gisfarmer/

    < type="text/JavaScript"> < src="http://a.alimama.cn/inf.js" type="text/javascript">

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gisfarmer/archive/2009/01/04/3701136.aspx#999696

  • 相关阅读:
    Windows平台下Glade+GTK开发环境的搭建
    uCOSII移植STM32F10x_Keil
    C语言中的内存管理与双向链表
    Windows平台下Glade+GTK实现多线程界面的探讨
    C语言中可变形参个数的函数实现
    从STM32的位带操作重谈嵌入式中寻址与对齐的理解
    uCOSII的中断ARM7实现中断嵌套的方法探究
    uCOSII中的内存管理C语言构建完整的微型动态内存管理机制
    uCOSII中的任务切换图解多种任务调度时机与问题
    uCOSII中的任务切换机制
  • 原文地址:https://www.cnblogs.com/chengulv/p/1787026.html
Copyright © 2011-2022 走看看