ADO.NET第三章:DataReader


考前復習

一、查詢首行首列

ExecuteNonQuery():執行 SQL 語句並返回受影響的行數
 
ExecuteReader():執行 SQL 語句並返回一個 SqlDataReader 對象
 
ExecuteScalar():執行 SQL 語句並返回查詢結果的第一行的第一列的值,忽略其他列或行的值
 
對於 ExecuteNonQuery()方法,我們已經學習過,是用於實現非查詢 SQL 命令的執行。另外,兩個
方法,其實都用於查詢之中。先看 ExecuteScalar()方法,它是用於執行查詢 SQL 命令,並可以返回查
詢結果第一行第一列的值
 
以查詢數據表中電影的總數量為例,來看 ExecuteScalar()方法的使用,具體代碼如下:
 
// 查詢電影數量的SQL語句 
string sql = "select count(*) from FilmInfo"; // 連接字符串 
string conStr = "server=.;database=FilmDB;uid=sa;pwd=123456;"; 
// 創建連接對象 
SqlConnection conn = new SqlConnection(conStr); // 打開連接 
conn.Open(); // 創建Command對象 
SqlCommand cmd = new SqlCommand(sql, conn); 
// 查詢首行首列 
int number = (int)cmd.ExecuteScalar(); // 輸出結果 
Console.WriteLine("一共有{0}部電影!",number); // 關閉連接 
conn.Close(); 
Console.ReadKey();
這個案例中,關鍵代碼為:int number = (int)cmd.ExecuteScalar(),通過 Command 對象來調用
ExecuteScalar()方法得到查詢結果中首行首列的值。而查詢語句 select count(*) from FilmInfo 只
返回了一個表示數量的整數值,所以適合使用該方法。還有一點,這里對查詢的結果進行了強制類型轉
換。這是因為 ExecuteScalar()方法默認返回結果為 Object 類型,我們根據查詢結果可以轉成其它相
應類型。需要注意的是,ExecuteScalar()方法執行的 SQL 語句也許並不都能夠得到我們想要的結果,
因此在進行類型轉換的時候很容易出錯,在使用的時候需要尤其小心。

二、DataReader

2.1、簡介

DataReader 對象的作用是以流的方式從數據源讀取數據,但是在讀取的時候它只能夠以只進的方
式讀取,並且一次只能夠讀取一行數據。比如數據源中有 10 條數據,它就只能夠從前往后讀取,如果
讀取了第 5 條數據后再想查看第 1 條數據,那就只能夠重新創建 DataReader 對象。另外,該對象只能
夠讀取數據,也就是說是只讀的,如果要修改數據,就不能夠使用 DataReader 對象了。
 
DataReader 對象的這種讀取方式使得它具有了很多有趣的特性。首先,DataReader 對象讀取數據
的操作是一個持續的過程,因此為它提供連接服務的 Connection 對象就無法再執行其他任何操作,除
非將 DataReader 對象關閉,否則這個狀態將會一直持續。其次,DataReader 對象並不關心數據行的
多少,它一次只能夠讀取一行,通過循環就能讀取大量的數據。
 
簡單總結起來,DataReader 對象進行查詢有如下的特點:
  •  DataReader 是只讀只進的數據流;
  •  使用 DataReader 讀取數據的過程,始終需要與數據庫保持連接;
  •  每次只能讀取一行數據,通過循環可以讀取多行數據。
下面是 ADO.NET 部分對象模型圖,圖中顯示了 DataReader 對象的作用:
 
趣味理解,應用程序從數據庫中查詢數據,就像從倉庫運送貨物到碼頭一樣,兩個地方首先要有一
條通路,這是 Connection 連接對象;也要有一輛貨車,這就是 DataReader 對象,負責運送貨物;貨車
上到底裝了多少貨物,取決於老板給你的指令,這就是 Command 對象。貨車要在路上跑的時候,倉庫和
碼頭之間的路要一直通着。

2.2、創建 DataReader 對象

DataReader 對象也會根據數據提供程序的不同而有所區別,而用於 SQL Server 的就是
SqlDataReader 對象,這里我們對 SqlDataReader 進行學習。
 
SqlDataReader 類所在的命名空間為 System.Data.SqlClient,它本身沒有任何的構造函數,所以
不能用new關鍵字來創建對象了。創建SqlDataReader對象必須調用SqlCommand對象的ExecuteReader() 
方法,如下代碼所示:
SqlDataReader dr = cmd.ExecuteReader(); // cmd是可用的Command對象
創建出 SqlDataReader 對象后,才能去進行數據的讀取。

2.3、常用方法

SqlDataReader 對象是一個輕量級的數據讀取對象,常用到的方法有兩個,如表 3-2 所示: 
Read()方法的作用是讀取下一條記錄,SqlDataReader 對象的默認位置在第一條記錄前面。因此,
必須調用 Read()方法來開始訪問數據。Read()方法返回結果為布爾類型,以確定是否還存在數據行,
如果返回值為 true,表示存在數據行;返回值為 false,表示已經沒有數據行了。
 
Close()方法則用於關閉 SqlDataReader 對象,對於每個關聯的 SqlConnection 對象,一次只能打
開一個 SqlDataReader 對象,直到調用其 Close()方法之前,打開另一個的任何嘗試都將失敗,因此
SqlDataReader 對象在使用完畢后一定不要忘記關閉。
 
由於SqlDataReader對象一次只能夠讀取一行數據,因此在使用的時候一般都是跟循環結構,尤其
是 while 循環配合一起使用,通過 Read()方法就可以確定是否還有數據行讀取,而在循環結構結束后
關閉 SqlDataReader 對象。基本代碼如下:
while(dr.Read()) // dr是可用的SqlDataReader對象,通過循環進行數據讀取
{
// 讀取數據
}
dr.Close(); // 關閉SqlDataReader對象
如果是特殊情況,查詢結果最多只有一行數據時,可以把循環改成 if 語句,只讀一次即可。剩下
的問題就是在循環中完成數據讀取及數據顯示的工作了。

2.4、讀取數據

假設執行的查詢語句是:select * from FilmInfo,在 SQL Server 中可以得到如下查詢結果: 
我們在應用程序中如何將數據讀取出來呢?SqlDataReader 對象提供了很多用來讀取數據的方法,
但是最常用的是通過下標來讀取數據。 以圖 3-4 的查詢結果為例,表示每列數據下標的方法有兩種:
 
1、 使用數字下標:
數字下標從 0 開始,第一列下標為 0,第二列下標為 1,依此類推。使用數字下標讀取列數據
的代碼如下: 
 int ID = (int)dr[0]; // 編號 
string name = dr[1].ToString(); // 電影名稱 
string typeName = dr[2].ToString(); // 電影類型 
string actors = dr[3].ToString(); // 演員列表 
int amount = (int)dr[4]; // 庫存數量 
decimal price = (decimal)dr[5]; // 價格 
string desc = dr[6].ToString(); // 描述
2、使用字段名稱下標:
還可以使用字段名稱即列名作為下標,代碼如下:
int ID = (int)dr["ID"];
// 編號
string name = dr["Name"].ToString();
// 電影名稱
string typeName = dr["TypeName"].ToString(); // 電影類型
string actors = dr["Actors"].ToString();
// 演員列表
int amount = (int)dr["Amount"];
// 庫存數量
decimal price = (decimal)dr["Price"];
// 價格
string desc = dr["Desc"].ToString();
// 描述
說明:代碼中的 dr 為 SqlDataReader 對象。
 
無論采用哪種方式,其中括號“[]”中所使用的下標或者字段名稱都是以SQL查詢語句的執行結果
為依據。雖然兩種方式的效果是一樣的,但是通過字段名稱作為下標來讀取數據會更加安全一些。還
有,默認時候讀取出來的數據是 Object 類型,所以通常需要進行類型轉換,一定要注意類型轉換是否
正確。 

三、案例

3.1、查詢全部電影信息 

static void Main(string[] args) { // 連接字符串 
 string conStr = "server=.;database=FilmDB;uid=sa;pwd=123456;"; 
 // 查詢所有電影信息的SQL語句 
 string sql = " select * from FilmInfo "; 
 // 創建Connection對象 
SqlConnection conn = new SqlConnection(conStr); 
// 打開連接 
 conn.Open(); 
// 創建Command對象 
 SqlCommand cmd = new SqlCommand(sql, conn); 
 // 創建DataReader對象 SqlDataReader dr = cmd.ExecuteReader(); 
 Console.WriteLine("============ 所有電影信息如下 ============"); // 通過循環讀取所有數據 while (dr.Read()) 
 { 
 // 讀取每列的值 
 int ID = (int)dr[0]; 
 string name = dr[1].ToString(); 
 string typeName = dr[2].ToString(); 
 string actors = dr[3].ToString(); 
 int amount = (int)dr[4]; 
 decimal price = (decimal)dr[5]; 
 string desc = dr[6].ToString(); 

 // 輸出 
 Console.WriteLine("電影編號:{0}", ID); 
 Console.WriteLine("電影名稱:{0}", name); 
 Console.WriteLine("電影類型:{0}", typeName); 
 Console.WriteLine("演員列表:{0}", actors); 
 Console.WriteLine("庫存數量:{0}", amount); 
 Console.WriteLine("價格:{0}", price); 
 Console.WriteLine("描述:{0}", desc); 
 Console.WriteLine("------------------------------------"); 
 } // 關閉DataReader對象 
 dr.Close(); 
// 關閉連接 
 conn.Close(); 
 Console.WriteLine("\n恭喜,查詢完成!"); 
 Console.ReadKey(); }

3.2.根據編號查詢某部電影信息 

這是查詢部分電影信息,我們的 SQL 語句需要加上 where 子句。如果是這樣,查詢過程又可能有什
么變化呢?下面來看根據電影編號進行查詢某部電影信息的案例: 
 
static void Main(string[] args) 
 { 
 Console.Write("輸入要查詢電影的編號:"); 
 int id = int.Parse(Console.ReadLine()); // 連接字符串 
 string conStr = "server=.;database=FilmDB;uid=sa;pwd=123456;"; 
// 根據編號查詢電影的SQL語句 
 string sql = string.Format("select * from FilmInfo where ID='{0}'",id); 
// 創建Connection對象 
 SqlConnection conn = new SqlConnection(conStr); 
// 打開連接 
 conn.Open(); 
// 創建Command對象 
 SqlCommand cmd = new SqlCommand(sql, conn); 
// 創建DataReader對象 SqlDataReader dr = cmd.ExecuteReader(); 
 Console.WriteLine("============電影信息如下 ============"); // 讀取數據 if(dr.Read()) 
 { 
 // 讀取每列的值 
 int ID = (int)dr[0]; 
 string name = dr[1].ToString(); 
 string typeName = dr[2].ToString(); 
 string actors = dr[3].ToString(); 
 int amount = (int)dr[4]; 
 decimal price = (decimal)dr[5]; 
 string desc = dr[6].ToString(); 
 
 // 輸出 
 Console.WriteLine("電影編號:{0}", ID); 
 Console.WriteLine("電影名稱:{0}", name); 
 Console.WriteLine("電影類型:{0}", typeName); 
 Console.WriteLine("演員列表:{0}", actors); 
 Console.WriteLine("庫存數量:{0}", amount); 
 Console.WriteLine("價格:{0}", price); 
 Console.WriteLine("描述:{0}", desc); 
 Console.WriteLine("------------------------------------"); 
 
 } // 關閉DataReader對象 
 dr.Close(); 
// 關閉連接 
 conn.Close(); 
 Console.WriteLine("\n恭喜,查詢完成!"); 
 Console.ReadKey(); }

3.3、根據電影名稱關鍵字查詢電影信息

我們再來看一個例子,根據電影名稱關鍵字進行模糊查詢。模糊查詢是查詢功能中非常重要的一種,
具體實現的代碼如下:
static void Main(string[] args) 
 { 
 Console.Write("輸入要查詢電影的名稱:"); 
 string key = Console.ReadLine(); 
 // 連接字符串 
 string conStr = "server=.;database=FilmDB;uid=sa;pwd=123456;"; 
 
// 根據關鍵字查詢電影的SQL語句 
 string sql = string.Format(@"select * from FilmInfo 
where Name like '{0}'","%"+key+"%");; 
 // 創建Connection對象 
 SqlConnection conn = new SqlConnection(conStr); 
 // 打開連接 
 conn.Open(); 
 // 創建Command對象 
 SqlCommand cmd = new SqlCommand(sql, conn); 
 // 創建DataReader對象 
 SqlDataReader dr = cmd.ExecuteReader(); 
 Console.WriteLine("============電影信息如下 ============"); 
 // 通過循環讀取數據 
 while (dr.Read()) 
 { 
 // 讀取每列的值 
 int ID = (int)dr[0]; 
 string name = dr[1].ToString(); 
 string typeName = dr[2].ToString(); 
 string actors = dr[3].ToString(); 
 int amount = (int)dr[4]; 
 decimal price = (decimal)dr[5]; 
 string desc = dr[6].ToString(); 
 // 輸出 
 Console.WriteLine("電影編號:{0}", ID); 
 Console.WriteLine("電影名稱:{0}", name); 
 Console.WriteLine("電影類型:{0}", typeName); 
 Console.WriteLine("演員列表:{0}", actors); 
 Console.WriteLine("庫存數量:{0}", amount); 
 Console.WriteLine("價格:{0}", price); 
 Console.WriteLine("描述:{0}", desc); 
 Console.WriteLine("------------------------------------"); } 
 // 關閉DataReader對象 
 dr.Close(); 
 // 關閉連接 
 conn.Close(); 

 Console.WriteLine("\n恭喜,查詢完成!"); 
 Console.ReadKey(); }
在這里,主要注意進行模糊匹配的查詢 SQL 語句寫法,在指定值時候要注意寫上百分號%。因為查
詢結果可能有多個,所以通過循環結構進行數據讀取。 
 
數據庫:
用戶驗證A:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;  //引入
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("***************用戶登錄***************");
            Console.Write("用戶名:");
            String uid = Console.ReadLine();
            Console.Write("密碼:");
            String pwd = Console.ReadLine();   //輸入用戶名與密碼
            String connStr = "server=.;uid=sa;pwd=sa;database=School;";  //連接字符串
            SqlConnection conn = new SqlConnection(connStr);  //連接對象
            String sql = String.Format("SELECT [id],[uid],[pwd],[name],[mobile] FROM [users] where uid='{0}'", uid); //將執行的SQL
            SqlCommand cmd = new SqlCommand(sql, conn);  //命令對象
            conn.Open();  //打開數據庫
            SqlDataReader dr = cmd.ExecuteReader();  //執行讀取
            if (dr.Read())  //下移取數據
            {
                String pwdDb = dr["pwd"].ToString();  //根據用戶名獲取數據庫中的密碼
                if (pwdDb == pwd)  //如果輸入的密碼與數據庫中的密碼一樣
                {
                    Console.WriteLine("登錄成功,歡迎您:"+dr["name"].ToString());  //提示登錄成功
                }else
                {
                    Console.WriteLine("密碼錯誤,請重試。");  //提示密碼錯誤 
                }
            }else  //如果下移失敗則用戶不存在
            {
                Console.WriteLine("用戶不存在");
            }
            dr.Close();
            conn.Close();
        }
    }
}
View Code
用戶驗證B:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;

namespace SchoolMIS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*********************學員管理系統登錄*********************");
            Console.Write("用戶名:");
            string uid = Console.ReadLine();
            Console.Write("密碼:");
            string pwd = Console.ReadLine();
            String connStr = "server=.;database=School;uid=sa;pwd=sa;";
            SqlConnection conn = new SqlConnection(connStr);
            String sql = string.Format("select COUNT(*) from users where uid='{0}' and pwd='{1}'",uid,pwd);
            SqlCommand cmd = new SqlCommand(sql, conn);
            conn.Open();
            int count=Convert.ToInt32(cmd.ExecuteScalar());  //取單行單列的值
            conn.Close();
            if (count > 0)
            {
                Console.WriteLine("登錄成功,歡迎進入本系統");
            }
            else
            {
                Console.WriteLine("驗證失敗,請重試");
            }

        }
    }
}
View Code
注冊用戶C:
 

 

 

 

 

五、SQL輔助工具類

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;
using System.Data;

namespace DB
{
   public class SQLHelper
    {
               //只讀的靜態數據庫連接字符串
        public static readonly string connString ="server=.;database=School;uid=sa;pwd=sa";

        #region 執行 增 刪 改
        /// <summary>
        /// 執行 增 刪 改
        /// </summary>
        /// <param name="sql">要執行的SQL</param>
        /// <param name="param">參數</param>
        /// <returns>影響行數</returns>
        public static int Zsg(string sql,params SqlParameter[] param)
        {
            //實例化連接對象,並指定連接字符串,自動釋放資源,不用關閉
            using (SqlConnection conn = new SqlConnection(connString))
            {
                //實例化命令對象,指定sql,與連接對象
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    //如果有參數
                    if (param != null)
                    {
                        //批量添加參數
                        cmd.Parameters.AddRange(param);
                    }
                    //打開連接
                    conn.Open();
                    //執行sql並返回影響行數
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        #endregion

        #region 執行 查詢
        /// <summary>
        /// 執行 查詢
        /// </summary>
        /// <param name="sql">要執行的SQL</param>
        /// <param name="param">參數</param>
        /// <returns>數據集</returns>
        public static SqlDataReader Cx(string sql,params SqlParameter[] param)
        {
            //實例化連接對象,並指定連接字符串
            SqlConnection conn = new SqlConnection(connString);
            //實例化命令對象,指定sql,與連接對象
            using (SqlCommand cmd = new SqlCommand(sql, conn))
            {
                //如果有參數
                if (param != null)
                {
                    //批量添加參數
                    cmd.Parameters.AddRange(param);
                }
                //打開連接
                conn.Open();
                //執行sql並返回影響行數,如果將返回的SqlDataReader關閉時也將關閉連接
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
        }
        #endregion

        #region 完成數據的查詢,返回DataTable
        /// <summary>
        /// 表格 完成數據的查詢,返回DataTable
        /// </summary>
        /// <param name="sql">要執行的sql</param>
        /// <param name="param">參數</param>
        /// <returns>DataTable</returns>
        public static DataTable Bg(string sql,params SqlParameter[] param)
        {
            //實例化連接對象,並指定連接字符串,自動釋放資源,不用關閉
            using (SqlConnection conn = new SqlConnection(connString))
            {
                SqlDataAdapter adp = new SqlDataAdapter(sql, conn);
                if (param != null)
                {
                    adp.SelectCommand.Parameters.AddRange(param);
                }
                DataTable dt = new DataTable();
                adp.Fill(dt);
                return dt;
            }
        } 
        #endregion
    }
}

 增刪除改示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            String sql = @"INSERT INTO [School].[dbo].[users]
           ([uid]
           ,[pwd]
           ,[name]
           ,[mobile])
     VALUES
           ('user007'
           ,'123567'
           ,'李小軍'
           ,'18890909987')";

            //執行並返回影響行數
            int row=DB.SQLHelper.Zsg(sql);
            if(row>0)
            {
                Console.WriteLine("執行成功");
            }
            else
            {
                Console.WriteLine("執行失敗");
            }
        }
    }
}

查詢示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlClient;

namespace ConsoleApplication8
{
    class Program
    {
        static void Main(string[] args)
        {
            String sql=@"SELECT [id]
                                            ,[uid]
                                            ,[pwd]
                                            ,[name]
                                            ,[mobile]
                                        FROM [School].[dbo].[users]";
            SqlDataReader dr=DB.SQLHelper.Cx(sql);
            while (dr.Read())
            {
                Console.WriteLine(dr["id"].ToString());
                Console.WriteLine(dr["uid"].ToString());
                Console.WriteLine(dr["pwd"].ToString());
                Console.WriteLine(dr["name"].ToString());
                Console.WriteLine(dr["mobile"].ToString());
                Console.WriteLine("=============================");
            }
            dr.Close();
        }
    }
}

六、音像店管理系統實現

1、展示菜單

 

 2、添加電影

 

 

 

 

3、電影列表

 

 4、刪除電影

 

 

 

 

 

 5、修改電影

 

 

 

 6、根據關鍵字查詢電影

 7、創建用戶表

 

 用戶編號id、用戶名uid、密碼pwd、name姓名、email郵箱

8、注冊用戶

 

 9、權限管理

 

 

 

 

 

10、用戶登錄

 

11、多級菜單

 

 

 

 

 

12、項目開發計划

一、項目介紹

這里寫同項目的意義與背景,為什么做這個項目,能解決什么問題,帶來什么好處。

二、項目功能

用戶管理 - > 張三

  添加用戶、刪除用戶、修改密碼、查詢用戶、更新用戶、退出系統

圖書管理 - > 李四

  新書上架.....................

三、進度計划

2020-05-26 完成用戶管理

。。。。。。

2020-06-21 整合

2020-06-22 測試

13、調用三方服務

天氣: http://ws.webxml.com.cn/WebServices/WeatherWebService.asmx

http://www.webxml.com.cn

using ConsoleApplication12.cn.com.webxml.ws;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication12
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("請輸入城市名稱:");
            string city = Console.ReadLine();

            WeatherWebService wws = new WeatherWebService();
            String[] result=wws.getWeatherbyCityName(city);

            for (int i = 0; i < result.Length; i++)
            {
                Console.WriteLine(result[i]);
            }


        }
    }
}

手機號碼:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx

using ConsoleApplication13.cn.com.webxml.ws;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication13
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("請輸入一個手機號碼:");
            String code=Console.ReadLine();
            MobileCodeWS mcws = new MobileCodeWS();
            String info=mcws.getMobileCodeInfo(code, "");
            Console.WriteLine(info);
        }
    }
}

14、寫文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;

namespace ConsoleApplication14
{
    class Program
    {
        static void Main(string[] args)
        {
            String content = Console.ReadLine();
            //寫在當前項目運行的位置
            File.WriteAllText(Environment.CurrentDirectory+@"\print.html",content);
            //指定寫入目錄
            //File.WriteAllText(@"c:\hello.txt",content);
        }
    }
}

 

private static void Dayin()
        {
            String sql = @"SELECT [ID],[Name] ,[TypeName],[Actors] ,[Amount],[Price],[Desc] FROM [FilmInfo]";
            SqlDataReader dr = DB.SQLHelper.Cx(sql);
            String content = "<h1>電影清單</h1><table width='100%' border=1>";
            while (dr.Read())
            {
                content += "<tr>";
                content+= "<td>"+dr["ID"].ToString()+"</td>";
                content += "<td>" + dr["Name"].ToString() + "</td>";
                content += "<td>" + dr["TypeName"].ToString() + "</td>";
                content += "<td>" + dr["Actors"].ToString() + "</td>";
                content += "<td>" + dr["Amount"].ToString() + "</td>";
                content += "<td>" + dr["Price"].ToString() + "</td>";
                content += "</tr>";
            }
            content += "</table><button onclick='print()'>打印</button>";
            dr.Close();
            String path = Environment.CurrentDirectory + @"\print.html";
            File.WriteAllText(path, content);
            Process.Start(path);
        }

15、讀文件

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.IO;
namespace ConsoleApplication15
{
    class Program
    {
        static void Main(string[] args)
        {
            //讀取c:\hello.txt中的所有內容(字符串)
            String content=File.ReadAllText(@"c:\hello.txt");
            Console.WriteLine(content);

            //讀取c:\hello.txt中的每一行,存放到數組中
            String[] lines = File.ReadAllLines(@"c:\hello.txt");
            Console.WriteLine(lines[3]);
            for (int i = 0; i < lines.Length; i++)
            {
                Console.WriteLine(lines[i]);
            }
        }
    }
}

16、導入

private static void Daoru()
        {
            String sql = @"INSERT INTO [FilmDB].[dbo].[FilmInfo]
                                                   ([Name]
                                                   ,[TypeName]
                                                   ,[Actors]
                                                   ,[Amount]
                                                   ,[Price]
                                                   ,[Desc])
                                             VALUES
                                                   ('{0}'
                                                   ,'{1}'
                                                   ,'{2}'
                                                   ,'{3}'
                                                   ,'{4}'
                                                   ,'{5}')";
            String[] data=File.ReadAllLines(@"c:\movie.txt");
            String name = data[0];
            String typeName = data[1];
            String actors = data[2];
            String amount = data[3];
            String price = data[4];
            String desc = data[5];
            sql = String.Format(sql, name, typeName, actors, amount, price, desc);
            int row = DB.SQLHelper.Zsg(sql);
            if (row > 0)
            {
                Console.WriteLine("導入成功!");
            }
            else
            {
                Console.WriteLine("導入失敗!");
            }
        }

 17、二維數組

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            //1
            int[,] score = new int[3,2];
            score[0,0] = 90;
            score[0,1] = 80;
            score[1, 0] = 85;
            score[1, 1] = 59;
            score[2, 0] = 88;
            score[2, 1] = 91;

            for (int i = 0; i < score.GetLength(0); i++)
            {
                for (int j = 0; j < score.GetLength(1); j++)
                {
                    Console.Write(score[i, j] + "\t");
                }
                Console.WriteLine();
            }

            int[,] s2 = new int[,]{
                {1,3},
                {2,4},
                {1,3}
            };

            //2
            int[][] s3 = new int[3][];
            s3[0] = new int[] {10,20 };
            s3[1] = new int[] { 30, 40 ,50};
            s3[2] = new int[2];
            s3[2][0] = 90;

            for (int i = 0; i < s3.Length; i++)
            {
                for (int j = 0; j < s3[i].Length; j++)
                {
                    Console.Write(s3[i][j]+"\t");
                }
                Console.WriteLine();
            }



        }
    }
}

 

七、作業

1、請使用數據庫完成“汽車管理系統”與“人事管理系統”, 下載題目下載題目2
2、

上機目標

1、掌握數據庫輔助類的編寫及使用;

2、仿照章節案例,完成綜合性的上機任務;

上機任務一(30分鍾內完成)

上機目的

編寫數據庫輔助類;

上機要求

1、使用第一章課后上機的學生管理數據庫;

2、在VS中創建學生管理項目,命名為StudentManageSystem;

3、在該項目中編寫用於數據庫操作的輔助類。

上機任務二(20分鍾內完成)

上機目的

實現學生管理項目主界面的打印和進行功能選擇;

上機要求

1、編寫函數,打印系統操作界面以及實現功能選擇;當用戶輸入1~4之間數字時,根據輸入值進行相應操作;當用戶輸入5時,提示“程序結束!”;當用戶輸入不在1~5之間時,提示“輸入錯誤,沒有這個功能!”;

2、編譯運行結果如圖所示:

 

上機任務三(50分鍾內完成)

上機目的

實現學生信息的添加、修改和刪除功能;

上機要求

1、分別編寫添加學生、修改學生和刪除學生信息的方法,通過調用這些方法完成相應操作;完成操作后都要返回到主界面;

2、編譯運行結果如下所示:

(1)添加學生信息的效果:

 

(2)修改學生信息的效果:(根據學號來修改學生的其它信息)

 

(3)刪除學生信息的效果:(根據學號來刪除學生信息,刪除時要詢問是否確定刪除)

 

上機任務四(40分鍾內完成)

上機目的

實現學生信息的查詢功能;

上機要求

1、編寫查詢所有學生信息的方法;

2、編譯運行結果如圖所示:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM