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 _2
{
public partial class FormMannage : Form
{
public FormMannage()
{
InitializeComponent();
}
private SqlConnection _connection; // 声明 SqlConnection 对象
//知识点信息 修改功能
public static int Pid;
public static string Pname;
public static string Stype;
public static string Savedate;
public static string Content;
public static string Image;
public static byte[] ImageData; // 存储图片的二进制数据
private void LoadPoint()
{
dgv.Rows.Clear();
Dao2 dao = new Dao2();
dao.Connect();
string sql = "SELECT * FROM T_Point";
// 修复:使用 using 语句确保 SqlDataReader 被正确释放
using (SqlDataReader reader = dao.Read(sql)) // 假设 dao.Read 返回 SqlDataReader
{
while (reader.Read())
{
dgv.Rows.Add(
reader[0].ToString(),
reader[1].ToString(),
reader[2].ToString(),
reader[3].ToString(),
reader[4].ToString(),
reader[5].ToString()
);
}
} // 此处 reader 会自动调用 Dispose() 释放资源
dao.Close(); // 关闭数据库连接
}
//刷新数据
private void button4_Click(object sender, EventArgs e)
{
LoadPoint();
}
private void lbName_Click(object sender, EventArgs e)
{
}
private void txtKey_TextChanged(object sender, EventArgs e)
{
}
//进行关键字搜索查询
private void btnSearch_Click(object sender, EventArgs e)
{
//拿到关键字
string key = txtKey.Text.Trim();
//以关键字进行模糊查询
Dao2 dao = new Dao2();
dao.Connect();
string sql = $"select * from T_Point where Pname like '%{key}%'or Stype like '%{key}%'";
SqlDataReader reader = dao.Read(sql);
//清空表格
dgv.Rows.Clear();
//结果显示到表格控件中
while (reader.Read())
{
dgv.Rows.Add(reader[0].ToString(), reader[1].ToString(), reader[2].ToString(),
reader[3].ToString(), reader[4].ToString(),reader[5].ToString());
}
reader.Close();
dao.Close();
}
//删除知识点
private void button3_Click(object sender, EventArgs e)
{
//获取到当前选中的知识点编号 key
if (lbid.Text == "NULL")
{
MessageBox.Show("未选中知识点", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
//删除对应的数据
Dao2 dao = new Dao2();
dao.Connect();
string sql = $"delete T_Point where Pid='{int.Parse(lbid.Text)}'";
if (dao.Execute(sql) > 0)
{
//删除成功
//两个对应的lb数据的修改 null
lbid.Text = "NULL";
lbName.Text = "NULL";
//更新表格数据
LoadPoint();
dao.Close();
MessageBox.Show("删除成功", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
dao.Close();
MessageBox.Show("删除失败", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
//查看简介
private void button5_Click(object sender, EventArgs e)
{
if (lbName.Text == "NULL")
{
MessageBox.Show("未选中知识点!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// 确保 lbid 是正确的知识点编号
if (string.IsNullOrEmpty(lbid.Text) || lbid.Text == "NULL")
{
MessageBox.Show("知识点编号无效!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// 获取知识点的编号
int pointId;
if (!int.TryParse(lbid.Text, out pointId))
{
MessageBox.Show("知识点编号格式错误!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Dao2 dao = new Dao2();
dao.Connect();
try
{
string sql = "SELECT [Content] FROM T_Point WHERE Pid = @Pid";
// 使用dao.Connection替代未定义的_connection
using (SqlCommand cmd = new SqlCommand(sql, dao.Connection)) // 关键修改点
{
cmd.Parameters.AddWithValue("@Pid", pointId);
object result = cmd.ExecuteScalar();
if (result != null)
{
string introduce = result.ToString();
MessageBox.Show(introduce, $"{lbName.Text}的简介", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("未找到该知识点的简介!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
catch (SqlException ex)
{
MessageBox.Show($"获取简介时发生错误:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
dao.Close();
}
}
//选中数据
private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgv.CurrentRow == null || dgv.CurrentRow.Cells[0].Value == null)
{
MessageBox.Show("选中无效数据!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
string Pid = dgv.CurrentRow.Cells[0].Value.ToString();//当前选中的知识点编号
string Pname = dgv.CurrentRow.Cells[1].Value.ToString();//当前选中的知识点名称
lbid.Text = Pid;
lbName.Text =Pname;
FormMannage.Pid = int.Parse(Pid); // 将字符串转换为整数并赋值给 FormMannage.Pid
FormMannage.Pname = Pname;
FormMannage.Stype = dgv.CurrentRow.Cells[2].Value.ToString();
FormMannage.Savedate = dgv.CurrentRow.Cells[3].Value.ToString();
FormMannage.Content = dgv.CurrentRow.Cells[4].Value.ToString();
}
//修改知识点
private void button2_Click(object sender, EventArgs e)
{
// 确保有选中的知识点
if (lbid.Text == "NULL")
{
MessageBox.Show("未选中知识点!", "消息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
// 将选中的知识点数据传递给更新窗体
FormUpdatePoint form = new FormUpdatePoint();
form.Pid = Pid;
form.Pname = Pname;
form.Stype = Stype;
form.Savedate = Savedate;
form.Content = Content;
form.ImageData = ImageData;
form.ShowDialog();
}
private void FormMannage_Load(object sender, EventArgs e)
{
}
}
}
如何实现在搜索之前就能选中数据
最新发布