1. <wbr id="m8vu6"></wbr>

      <del id="m8vu6"><center id="m8vu6"><source id="m8vu6"></source></center></del>
        <p id="m8vu6"><sub id="m8vu6"></sub></p>

        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 數據庫 > Access數據庫 >
        • access數據庫之Access之C#連接Access

         

        如果是個人用的小程序的話。一般都推薦用Sqlite和Access

        使用SQlite數據庫需要安裝SQLite驅動,詳情:SQLite之C#連接SQLite

        同樣要使用Access數據庫一必須安裝Access驅動程序。驅動下載:http://pan.baidu.com/s/1moWje

        官網下載:http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

        可以在收索你需要的版本。

         

        微軟ADO.NET數據提供程序

        數據提供程序 命名空間 程序集
        OLE DB System.Data.OleDb System.Data.dll
        Microsoft SQL Server System.Data.SqlClient System.Data.dll
        Microsoft.SQL Server Mobile System.Data.SqlServerCe System.Data.SqlServerCe.dll
        ODBC System.Data.Odbc System.Data.dll

         

         

        沒有特定的數據提供程序直接映射到Jet引擎(比如微軟的Access數據庫),如果要和Acces數據文件交互,可以使用OLE DB數據提供程序或者ODBC數據提供程序。

        由定義在System.Data.OleDb命名空間下的類組成的OLE DB 數據提供程序能讓你訪問所有支持基于傳統COM的OLD DB協議的數據庫,使用這個數據庫提供程序,能非常簡單地改變連接字符串中的“provider”,并能和各種OLE DB數據庫進行通信。

         

        如果你安裝了微軟的office。那么也安裝了Access數據庫,現在我們來一步一步完成對Access數據庫的訪問

        打開Access數據庫,選擇創建數據庫。選擇保存路徑和取名,單擊創建即可

         

         

        然后的界面就很熟悉了

         

         單擊 "單擊以添加" 可以選擇數據類型

        選擇類型后。比如這里選擇文本類型。就可以輸入字段名稱

         

         

        這里你會看到前面有一個默認的列ID。默認是主鍵。自增的。你可以選擇當前列。在屬性中看到,當然。你也可以改變當前字段的數據類型

         

         

         

        為了簡化操作,我這里只創建3個字段用于測試

        字段名稱 字段類型 字段說明
        name string 姓名
        age int 年齡
        crateDate DateTime 添加時間(默認值是當天)

         

        創建時間createDate需要設置默認值,選擇createDate列,在屬性部分。單擊默認值。輸入Now(),確定即可。還可以設置表達式格式。可以自己去看

         

         

         

        創建完成后。ctrl+s保存。輸入表名稱user,確定

        現在創建一個控制臺程序。來連接Access

        添加引用:System.Data.dll,

        添加命名空間:using System.Data.OleDb;

         

        為了方便。把數據庫拷貝到項目的Debug目錄下面,編寫測試代碼

        復制代碼
         1 using System;
         2 using System.Collections.Generic;
         3 using System.Linq;
         4 using System.Text;
         5 using System.Data.OleDb; //引入命名空間 需要添加引用 System.Data.dll
         6 
         7 namespace ConsoleApplication2
         8 {
         9     class Program
        10     {
        11         static void Main(string[] args)
        12         {
        13             //連接Access字符串
        14             string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=userInfo.accdb;Persist Security Info=False";
        15 
        16             //插入數據
        17             string name = "張三";
        18             int age = 18;
        19 
        20             string sql = "insert into user(name,age)values(@name,@age)";
        21             OleDbParameter[] para = { 
        22                                         new OleDbParameter("@name",OleDbType.VarChar),
        23                                         new OleDbParameter("@age",OleDbType.Integer),
        24                                         /*
        25                                          * 我不知道這樣寫有什么區別,除了更簡單還有什么好處
        26                                            new OleDbParameter("@age",age)
        27                                          */
        28                                     };
        29             para[0].Value = name;
        30             para[1].Value = age;
        31 
        32             int rows = 0;
        33 
        34             using (OleDbConnection connect = new OleDbConnection(conStr))
        35             {
        36                 using (OleDbCommand cmd = new OleDbCommand(sql, connect))
        37                 {
        38                     if (para != null && para.Length > 0) cmd.Parameters.AddRange(para);
        39 
        40                     if (connect.State == System.Data.ConnectionState.Closed) connect.Open();
        41 
        42                     rows = cmd.ExecuteNonQuery();
        43                 }
        44             }
        45 
        46             if (rows > 0) Console.WriteLine("插入成功");
        47             Console.ReadLine();
        48         }
        49     }
        50 }
        復制代碼

         

         

        運行后提示錯誤:

         

        仔細看sql語句是不是沒有錯誤的語法。再仔細想想呢?對,user是關鍵字,需要加用[]包裹。像這樣:[user]

        string sql = "insert into [user](name,age)values(@name,@age)";

        修改后在運行,人品爆發的成功了

        是不是迫不及待的想看看Access數據庫中是否真的插入成功呢?

        打開數據庫界面。F5刷新試試

        當然,你可以可以編寫sql查詢

         

         

         

         

        右鍵:

         

         

         

        跟著一步一步下來是不是也沒有想象中的那么難呢?其實什么都不難。只要你肯努力:)

        來看看鏈接字符串:

         //連接Access字符串
          string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=userInfo.accdb;Persist Security Info=False";

        這里的Microsoft.ACE.OLEDB.12.0,是連接Excel對象的接口引擎,與之對應的是:microsoft.jet.oledb.4.0

        那么問題來了:

        Microsoft.jet.oledb.4.0和Microsoft.ACE.OLEDB.12.0引擎有什么區別呢?

        共同點:都是做為連接Excel對象的接口引擎

        不同點:

        對于不同的Excel版本,有兩種接口可供選擇:Microsoft.Jet.OLEDB.4.0(以下簡稱 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下簡稱 ACE 引擎)。

        Jet 引擎,可以訪問 Office 97-2003,但不能訪問 Office 2007。

        ACE 引擎是隨 Office 2007 一起發布的數據庫連接組件,既可以訪問 Office 2007,也可以訪問 Office 97-2003。

        另外:Microsoft.ACE.OLEDB.12.0 可以訪問正在打開的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

        所以,在使用不同版本的office時,要注意使用合適的引擎。

         

        我這里用的Access 2007,所以用的是ACE引擎

         

         

        Data Source=userInfo.accdb。這里訪問的是相對路徑。因為數據庫放在了Debug下面,但我來自火星。我就偏偏不喜歡把數據庫放到Debug下面。

        我想在項目中單獨創建一個目錄來存放數據庫。那怎么辦呢?好吧。程序員是偉大的。那你可以改路徑,在項目下面創建一個db文件夾。把數據集拷貝到里面,結構圖

         

        從圖可以看出來,從Debug目錄到db目錄要退兩次,那么不就是 “..\..\” 。對嗎?

        那立馬改改看看效果:

        string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\..\db\userInfo.accdb;Persist Security Info=False";

        對與否。你自己去測試下。哈哈。

         

        記住:sql server中是可以拼接多條sql語句。然后一次性執行的。對吧,但Access是不行的。如果要執行多條sql語句。必須循環遍歷。執行一條在執行下一條,直到海枯石爛。

         

        為了更好的維護。當然是首選把連接字符串配置到app.config中

        看看我已經配好了的

        復制代碼
         1 <?xml version="1.0"?>
         2 <configuration>
         3   <configSections>
         4   </configSections>
         5   <connectionStrings>
         6     <add name="GoodManage.Properties.Settings.GMConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\GM.accdb" providerName="System.Data.OleDb" />
         7   </connectionStrings>
         8   <appSettings>
         9     <add key="accessCon" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\..\db\GM.accdb;Persist Security Info=False" />
        10     <add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source=" />
        11     <add key="dbPath" value="..\..\db\GM.accdb" />
        12     <add key="ClientSettingsProvider.ServiceUri" value="" />
        13   </appSettings>
        14   <startup>
        15     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
        16   </startup>
        17   <system.web>
        18     <membership defaultProvider="ClientAuthenticationMembershipProvider">
        19       <providers>
        20         <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, 
        
        PublicKeyToken=31bf3856ad364e35" serviceUri="" />
        21       </providers>
        22     </membership>
        23     <roleManager defaultProvider="ClientRoleProvider" enabled="true">
        24       <providers>
        25         <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
        26       </providers>
        27     </roleManager>
        28   </system.web>
        29 </configuration>
        復制代碼

         

         

        最后提供一個SQLHelper.cs  類

        復制代碼
          1 using System;
          2 using System.Collections.Generic;
          3 using System.Linq;
          4 using System.Text;
          5 using System.Data.SqlClient;
          6 using System.Data;
          7 using System.Configuration;
          8 using System.Data.OleDb;
          9 using System.Web;
         10 namespace DAL
         11 {
         12     public class SQLHelper
         13     {
         14         //連接字符串
         15 
         16         static string connStr = ConfigurationManager.AppSettings["accessCon"];
         17       
         18 
         19         /// <summary>
         20         /// 返回受影響的行數
         21         /// </summary>
         22         /// <param name="comText"></param>
         23         /// <param name="param"></param>
         24         /// <returns></returns>
         25         public static int ExecuteNonQuery(string comText, params OleDbParameter[] param)
         26         {
         27             using (OleDbConnection conn = new OleDbConnection(connStr))
         28             {
         29                 using (OleDbCommand cmd = new OleDbCommand(comText, conn))
         30                 {
         31                     if (param != null && param.Length != 0)
         32                     {
         33                         cmd.Parameters.AddRange(param);
         34                     }
         35                     if (conn.State == ConnectionState.Closed)
         36                     {
         37                         conn.Open();
         38                     }
         39                     return cmd.ExecuteNonQuery();
         40                 }
         41             }
         42         }
         43         /// <summary>
         44         /// 返回數據對象
         45         /// </summary>
         46         /// <param name="comText"></param>
         47         /// <param name="param"></param>
         48         /// <returns></returns>
         49         public static object ExecuteScalar(string comText, params OleDbParameter[] param)
         50         {
         51             using (OleDbConnection conn = new OleDbConnection(connStr))
         52             {
         53                 using (OleDbCommand cmd = new OleDbCommand(comText, conn))
         54                 {
         55                     if (param != null && param.Length != 0)
         56                     {
         57                         cmd.Parameters.AddRange(param);
         58                     }
         59                     if (conn.State == ConnectionState.Closed)
         60                     {
         61                         conn.Open();
         62                     }
         63                     return cmd.ExecuteScalar();
         64                 }
         65             }
         66         }
         67         /// <summary>
         68         /// 返回table
         69         /// </summary>
         70         /// <param name="cmdText"></param>
         71         /// <param name="param"></param>
         72         /// <returns></returns>
         73         public static DataTable Adapter(string cmdText, params OleDbParameter[] param)
         74         {
         75             DataTable dt = new DataTable();
         76             //OleDbConnection con = new OleDbConnection();
         77             using (OleDbDataAdapter oda = new OleDbDataAdapter(cmdText, connStr))
         78             {
         79                 if (param != null && param.Length != 0)
         80                 {
         81                     oda.SelectCommand.Parameters.AddRange(param);
         82                 }
         83                 if (new OleDbConnection().State == ConnectionState.Closed)
         84                 {
         85                     new OleDbConnection(connStr).Open();
         86                 }
         87                 oda.Fill(dt);
         88             }
         89             return dt;
         90 
         91             /*
         92             using (SqlDataAdapter sda = new SqlDataAdapter(cmdText, connStr))
         93             {
         94                 if (param != null && param.Length != 0)
         95                 {
         96                     sda.SelectCommand.Parameters.AddRange(param);
         97                 }
         98                 sda.Fill(dt);
         99             }
        100             return dt;
        101              * */
        102         }
        103         /// <summary>
        104         /// 向前讀取記錄
        105         /// </summary>
        106         /// <param name="cmdText"></param>
        107         /// <param name="param"></param>
        108         /// <returns></returns>
        109         public static OleDbDataReader ExectueReader(string cmdText, params OleDbParameter[] param)
        110         {
        111             OleDbConnection conn = new OleDbConnection(connStr);
        112             using (OleDbCommand cmd = new OleDbCommand(cmdText, conn))
        113             {
        114                 if (param != null && param.Length != 0)
        115                 {
        116                     cmd.Parameters.AddRange(param);
        117                 }
        118                 if (conn.State == ConnectionState.Closed)
        119                 {
        120                     conn.Open();
        121                 }
        122                 return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        123             }
        124         }
        125         /// <summary>
        126         /// 讀取存儲過程
        127         /// </summary>
        128         /// <param name="cmdText"></param>
        129         /// <param name="type"></param>
        130         /// <param name="param"></param>
        131         /// <returns></returns>
        132         public static DataTable GetPro(string cmdText, CommandType type, params OleDbParameter[] param)
        133         {
        134             DataTable dt = new DataTable();
        135             using (OleDbDataAdapter sda = new OleDbDataAdapter(cmdText, connStr))
        136             {
        137                 new OleDbCommand().CommandType = CommandType.StoredProcedure;
        138                 if (param != null && param.Length != 0)
        139                 {
        140                     sda.SelectCommand.Parameters.AddRange(param);
        141                 }
        142                 sda.Fill(dt);
        143             }
        144             return dt;
        145         }
        146     }
        147 }
        復制代碼

         

         

        sqlite、Access都只要安全驅動就可以用數據庫。那sql server是不是也可以 呢。答案是正確的。

        只要安裝Microsoft SQL Server 2005 Express Edition,就可以使用sql數據庫了

        當安裝vs2010或其他版本,也就順帶的安裝了express Edition

        Microsoft SQL Server 2005 Express Edition官網下載:

        http://www.microsoft.com/zh-cn/download/details.aspx?id=21844

        但要管理數據庫就需要安裝SQL Server Management Studio。

        在網上找到一片關于Express edition 開啟遠程連接的方法,我沒嘗試過。真的。我不騙你

        http://blog.csdn.net/xiongyilong/article/details/1925353

        轉載于此:

        SQL Server 2005 Express 作為微軟數據庫的低端解決方案,在開發小型應用和WEB應用中有廣泛的使用。但是SQL Server 2005 Exrpress在默認安裝下只允許本機訪問,如何啟用網絡訪問功能就很有必要,現在我簡單的介紹一下。

        1、 確 認成功安裝SQL Server 2005 Express和 數據庫服務已經啟動。安裝完成后,可以通過隨SQL Server 2005 Express一同安裝的工具 SQL Server Configuration Manager 查看數據庫服務和其他的配置信息。

        上圖顯示數據庫服務已經啟用。

        2、 查 看SQL Server Express 2005 網絡配置信息(SQL Server 2005 Network Configuration――> Protocols for SQLEXPRESS)。默認的情況下右邊列表中的Named Pipes和TCP/IP的狀態為Disable,即沒有啟用。右鍵點擊這兩項,在彈出菜單中選中Enable啟用這兩個協議,如下圖。

        3、 在TCP/IP協議上雙擊鼠標,彈出對話框。修改對話框Protocol屬性頁中的“Listen All ”項設為“no”。IP Address屬性頁中,修改你要數據庫服務監聽的IP地址的屬性,修改Enabled屬性為Yes,修改TCP Dynamic Ports屬性為空,TCP Port項在默認安裝下為空,現在修改為我們監聽端口1433。修改后的狀態如下圖所示;

         

         

         

        4、 啟動管理工具

        ,管理界面如下所示:

        選中“Surface Area Configuration for Services and Connection”選項

        5、 改修改DATA Engine的Remote Connection屬性,修改后的屬性如下圖所示:

        6、 完成以上操作后需要重新啟動數據庫服務才能使修改生效,下圖的操作可以完成數據庫服務的重啟。

         

         

        7、 重啟后,可以在命令窗口輸入如下命令“netstat - na”命令查看服務器監聽的所有端口,如果我們設備的1433端口正在監聽,我們啟用SQL Server 2005 Express網絡操作成功。當然也可以使用telnet 命令來驗證數據庫操作是否成功。使用netstat命令操作如下圖所示。

         

         

         

         好了。至此。完

         

        作者: nsky 
        出處: http://nsky.cnblogs.com 
        本文版權歸作者和博客園共有,歡迎轉載,共同學習;共同進步;但不能亂搞!
        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看