C#網路應用編程基礎練習題與答案(八)

來源:互聯網
上載者:User
編程|網路

  1. 使用保持串連的方式編寫程式,計算各年級平均成績,並顯示結果。

  【解答】

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.Data.SqlClient;
  namespace 習題8_6_1
  {
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
  //添加Button按鈕在ListBox中顯示結果
  private void button1_Click(object sender, EventArgs e)
  {
  listBox1.Items.Add("年級 平均成績");
  string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;
  //根據連接字串建立SqlConnection執行個體
  SqlConnection conn = new SqlConnection(connectionString);
  //建立SqlCommand執行個體,並設定SQL語句和使用的串連執行個體
  SqlCommand cmd = new SqlCommand();
  cmd.CommandText = "select substring(學號,1,2) as 年級,avg(成績) as 平均成績 from MyTable2 group by substring(學號,1,2)";
  cmd.Connection = conn;
  try
  {
  conn.Open();
  SqlDataReader r = cmd.ExecuteReader();
  while (r.Read() == true)
  {
  listBox1.Items.Add(string.Format("{0}級 {1}", r[0], r[1]));
  }
  r.Close();
  }
  catch (Exception err)
  {
  MessageBox.Show(err.Message, "計算成績失敗");
  }
  finally
  {
  conn.Close();
  }
  }
  }
  }

  2. 使用保持串連的方式編寫程式,查詢MyTable2中不及格學生的學號,姓名,性別,成績。並將結果在ListBox中顯示出來。

  【解答】

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.Data.SqlClient;
  namespace 習題8_6_2
  {
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e)
  {
  listBox1.Items.Add(" 學號 姓名 性別 成績");
  string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;
  //根據連接字串建立SqlConnection執行個體
  SqlConnection conn = new SqlConnection(connectionString);
  //建立SqlCommand執行個體,並設定SQL語句和使用的串連執行個體
  SqlCommand cmd = new SqlCommand();
  cmd.CommandText =
  "Select 學號,姓名,性別, 成績 From MyTable2 Where (成績<60)";
  cmd.Connection = conn;
  try
  {
  conn.Open();
  SqlDataReader r = cmd.ExecuteReader();
  while (r.Read() == true)
  {
  listBox1.Items.Add( string.Format("{0} {1} {2} {3}", r[0], r[1], r[2], r[3]));
  }
  r.Close();
  }
  catch (Exception err)
  {
  MessageBox.Show(err.Message, "查詢成績失敗");
  }
  finally
  {
  conn.Close();
  }
  }
  }
  }

  3. 編寫程式,以“[編碼]名稱”的樣式在comboBox1中顯示MyTable1的內容。

  【解答】

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.Data.SqlClient;
  namespace 習題8_6_3
  {
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
  private void Form1_Load(object sender, EventArgs e)
  {
  string connectionString = Properties.Settings.Default.MyDatabaseConnectionString;
  //根據連接字串建立SqlConnection執行個體
  SqlConnection conn = new SqlConnection(connectionString);
  //建立SqlCommand執行個體,並設定SQL語句和使用的串連執行個體
  SqlCommand cmd = new SqlCommand();
  cmd.CommandText = "Select * From MyTable1";
  cmd.Connection = conn;
  try
  {
  conn.Open();
  SqlDataReader r = cmd.ExecuteReader();
  while (r.Read() == true)
  {
  comboBox1.Items.Add(string.Format("[{0}] {1}", r[0], r[1]));
  }
  comboBox1.SelectedIndex = 0;
  r.Close();
  }
  catch (Exception err)
  {
  MessageBox.Show(err.Message, "顯示資料失敗");
  }
  finally
  {
  conn.Close();
  }
  }
  }
  }

  4. 在畫線處填上合適的內容,使程式變得正確完整。

  string connString="server=localhost;Integrated Security=SSPI;database=pubs";
  SqlConnection conn=____________________________
  string strsql="select * from MyTable2";
  SqlDataAdapter adapter=new SqlDataAdapter(_____________);
  dataset=new DataSet();
  adapter.Fill(________________,"MyTable2");
  this.dataGridView1.DataSource=dataset.Tables["MyTable2"];

  【解答】

  string connString="server=localhost;Integrated Security=SSPI;database=pubs";
  SqlConnection conn= new SqlConnection(Properties.Settings.Default.MyDatabaseConnectionString);
  string strsql="select * from MyTable2";
  SqlDataAdapter adapter=new SqlDataAdapter(conn);
  dataset=new DataSet();
  adapter.Fill(dataset,"MyTable2");
  this.dataGridView1.DataSource=dataset.Tables["MyTable2"];

  5. 已知資料庫中定義了一張person表,表的資料結構如下:

  欄位名稱欄位類型欄位含義

  id數字編號

  xm文本姓名

  xb文本性別

  nl數字年齡

  zip文本郵遞區號

  用編寫代碼的方法在DataGridView中顯示該資料表中年齡大於18的所有紀錄,顯示時以編號的升序排序,要求禁止使用者編輯資料。

  【解答】

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.Data.SqlClient;
  namespace 習題8_6_5
  {
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e)
  {
  string connectionstring = Properties.Settings.Default.MyDatabaseConnectionString ;
  SqlConnection conn = new SqlConnection(connectionstring);
  try
  {
  conn.Open();
  SqlDataAdapter adapter = new SqlDataAdapter(
  "select id,xm,xb,nl from person where nl > 18 order by id", conn);
  DataSet dataset = new DataSet();
  //如果不指定表名,則系統自動產生一個預設的表名
  adapter.Fill(dataset, "person");
  //可以使用索引引用產生的表
  dataGridView1.DataSource = dataset.Tables["person"];
  adapter.Dispose();
  }
  catch (Exception err)
  {
  MessageBox.Show(err.Message);
  }
  finally
  {
  conn.Close();
  }
  }
  private void Form1_Load(object sender, EventArgs e)
  {
  //不允許使用者直接在最下面的行添加新行
  dataGridView1.AllowUserToAddRows = false;
  //不允許使用者直接按Delete鍵刪除行
  dataGridView1.AllowUserToDeleteRows = false;
  }
  }
  }

  6.例8-18的預存程序定義中,將“@surname nvarchar(2),”改為“@surname nchar(2),”,是否仍然能夠得到正確結果,為什麼?

  【解答】

  不一定。因為如果傳遞的參數值為“王”,在預存程序中會自動變為“王 ”。

  7. 調用預存程序,設計程式完成下列功能:任意給出一個漢字,統計MyTable2中所有包含該漢字的人數,並顯示統計結果。

  【解答】

  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using System.Data.SqlClient;
  namespace 習題8_6_7
  {
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e)
  {
  SqlConnection conn =
  new SqlConnection(Properties.Settings.Default.MyDatabaseConnectionString);
  SqlCommand cmd = new SqlCommand();
  cmd.Connection = conn;
  //設定SQL語句為預存程序名,命令類型為預存程序
  cmd.CommandText = "SelectFilterStudentsNum";
  cmd.CommandType = CommandType.StoredProcedure;
  //添加預存程序中參數需要的初始值,注意參數名要和預存程序定義的參數名相同
  if( textBox1.Text=="")
  {
  MessageBox.Show("請輸入有效資訊","錯誤");
  textBox1.Focus();
  return ;
  }
  cmd.Parameters.AddWithValue("@surname", textBox1.Text);
  cmd.Parameters.AddWithValue("@record", 0);
  //指定哪些參數需要返回結果
  cmd.Parameters["@record"].Direction = ParameterDirection.Output;
  try
  {
  conn.Open();
  //執行預存程序
  cmd.ExecuteNonQuery();
  //顯示返回的結果
  MessageBox.Show(string.Format("有{0}條含 {1} 的記錄",
  cmd.Parameters["@record"].Value,textBox1.Text));
  }
  catch (Exception err)
  {
  MessageBox.Show(err.Message);
  }
  finally
  {
  conn.Close();
  }
  }
  }
  }

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。