数据库编程。有三个表:
读者表:卡号,学生姓名,性别
书籍表:书号,书名,出版社
借阅表: 卡号,书号,借阅日期
(1)输入学生姓名,能够查出所借书籍和借阅日期;
(2)列出书的热度排行榜,需给出书的书名,出版社和借阅次数,并根据借阅次数从多到少排序。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace see2017
{
public partial class Form1 : Form
{
private const string connStr = "Data Source=localhost;Initial Catalog=scnt;Integrated Security=True";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 读取输入的学生姓名
string cardname = textBox1.Text.Trim();
// 连接数据库,查询学生选课信息
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
// 构造查询语句
string sql = @"SELECT b.name, b.id, l.lday
FROM book b
JOIN lend l ON b.id = l.book_id
JOIN rcard r ON l.rcard_id = r.id
WHERE r.name = @cardname";
// 构造查询命令对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@cardname", cardname);
// 执行查询,得到查询结果
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataGridView1.DataSource = dataTable;
}
}
}
private void button2_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
// 构造查询语句
string sql = @"SELECT b.name, b.pcompany, COUNT(l.book_id) AS lendtimes
FROM book b
JOIN lend l ON b.id = l.book_id
JOIN rcard r ON l.rcard_id = r.id
group by b.name, b.pcompany, b.id
order by COUNT(l.book_id) DESC";
// 构造查询命令对象
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
dataGridView2.DataSource = dataTable;
}
}
}
}
}