2017-D
2017-D
数据库部分
- 使用Windows 身份验证登录SQL Server ,建立数据库test0322,文件日志保存到一个专门的文件夹
- 建表
- 备份数据库,选定所创建数据库,右键-任务-备份-选择自己建立的文件夹位置,文件名和后缀都要完整的打出来(如:backupInfo.bak)
- 打开VS,创建一个Windows 窗体应用(.NET Framework),文件夹选择刚才创建的文件夹中的 /source文件夹,框架选择.NET Framework 2.0
- 在应用中创建DB.cs , Intent.cs, 以及自带的Form1窗体
- 写代码
项目解决方案内容:
DB.cs
using System; using System.Collections.Generic; using System.Data;//DataTable用到 using System.Data.SqlClient;//一些数据库操作类用到 using System.Text; namespace test0322 { internal class DB : IDisposable { private SqlConnection sqlConnection; public DB() { //采用Windows 身份验证,关键词Trusted_Connection=SSPI sqlConnection = new SqlConnection(@"server=.;database=test0322;Trusted_Connection=SSPI"); sqlConnection.Open(); } //查询 public DataTable GetBySql(string sql) { SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(new SqlCommand(sql,sqlConnection)); DataTable dt = new DataTable(); sqlDataAdapter.Fill(dt); return dt; } //相当于析构函数 public void Dispose() { sqlConnection.Close(); } } }
Intent.cs
//本次工程未用到 using System; using System.Collections.Generic; using System.Text; namespace test0322 { internal class Intent { //存数数据的字典容器 public static Dictionary<string,Object> data = new Dictionary<string,Object>(); } }
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace test0322 { public partial class Form1 : Form { DB db; public Form1() { InitializeComponent(); db = new DB(); } private void Form1_Load(object sender, EventArgs e) { listView2.Columns.Add("书名", listView2.Width / 3 - 1, HorizontalAlignment.Left); listView2.Columns.Add("出版社", listView2.Width / 3 - 1, HorizontalAlignment.Left); listView2.Columns.Add("借阅次数", listView2.Width / 3 - 1, HorizontalAlignment.Left); DataTable dt = db.GetBySql(@"select [books].[b_name] as '书名',[books].[b_press] as '出版社',count([borrows].[b_id])as '借阅次数' from [borrows],[books] where [borrows].[b_id]=[books].[b_id] group by [books].[b_id],[books].[b_name],[books].[b_press] order by '借阅次数' desc;"); listView2.BeginUpdate(); for(int i=0; i<dt.Rows.Count; i++) { ListViewItem listViewItem = new ListViewItem(); for(int j=0; j<dt.Columns.Count; j++) { if (j <= 0) { listViewItem.Text = dt.Rows[i][j].ToString(); } else { listViewItem.SubItems.Add(dt.Rows[i][j].ToString()); } } listView2.Items.Add(listViewItem); } listView2.EndUpdate(); } //查询按钮 private void button1_Click(object sender, EventArgs e) { listView1.Clear(); listView1.Columns.Add("书号", listView1.Width / 4 - 1, HorizontalAlignment.Left); listView1.Columns.Add("书名", listView1.Width / 4 - 1, HorizontalAlignment.Left); listView1.Columns.Add("出版社", listView1.Width / 4 - 1, HorizontalAlignment.Left); listView1.Columns.Add("借阅日期", listView1.Width / 4 - 1, HorizontalAlignment.Left); DataTable dt = db.GetBySql(@"select [books].[b_id] as '书号',[books].[b_name] as'书名',[books].[b_press] as '出版社',[borrows].[b_date] as '借阅日期' from [books],[borrows],[readers] where [readers].[r_name]='"+this.textBox1.Text+"' and [borrows].[r_id]=[readers].[r_id] and [borrows].[b_id]=[books].[b_id];"); listView1.BeginUpdate(); for (int i = 0; i < dt.Rows.Count; i++) { ListViewItem listViewItem = new ListViewItem(); for (int j = 0; j < dt.Columns.Count; j++) { if (j <= 0) { listViewItem.Text = dt.Rows[i][j].ToString(); } else { listViewItem.SubItems.Add(dt.Rows[i][j].ToString()); } } listView1.Items.Add(listViewItem); } listView1.EndUpdate(); } //输入完Enter可代替查询按钮 private void textBox1_KeyDown(object sender, KeyEventArgs e) { //一旦用户在输入过程中输入Enter,则执行Button1的查询按钮点击事件 if(e.KeyCode == Keys.Enter) { this.button1_Click(sender, e); } } } }
效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!