1设计一基于window窗体的登录界面,窗体居中显示。要求用户输入用户名和密码,若登录失败则显示用户名或密码错误,若登录成功则显示第二个窗体。第二个窗体显示数据库内的数据,能实现数据的删除功能。
- 第一步:基于Windows窗体的登录界面设计:
注意事项:注意居中
- 第二步:登录界面代码设计:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace C_shape考核第一题
{
public partial class Form1 : Form
{
Form2 f2 = new Form2();
public Form1()
{
InitializeComponent();
}
private void btn_Login_Click(object sender, EventArgs e)
{
//定义两个字符变量接收用户名和密码输入
string id = txtID.Text;
string pwd = txtPwd.Text;
//定义连接字符
string str = @"Data Source = LAPTOP-KKS0SHEJ;
Database = login;
Integrated Security = True;";
//创建数据库连接对象
SqlConnection conn = new SqlConnection(str);
//打开数据库连接
conn.Open();
//验证输入
if (txtID.Text =="" || txtPwd.Text == "" )
{
MessageBox.Show("请输入非空的用户名或密码");
}
else
{
string sql = "select * from login where id = '" + id + "' and pwd ='" + pwd + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
SqlDataReader sdr = cmd.ExecuteReader();
if(sdr.Read())
{
//MessageBox.Show("登录成功");
f2.ShowDialog();
this.Close();
}
else
{
MessageBox.Show("用户名或密码错误");
}
}
}
3.第三步:数据操作界面设计:
4.第四步:数据操作界面代码设计:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace C_shape考核第一题
{
public partial class Form2 : Form
{
public static string str = @"Data Source =LAPTOP-KKS0SHEJ;
Database=login; Integrated Security=True;";//连接字符
public static string sql = "select * from login";//查询语句
public static SqlConnection conn = new SqlConnection(str);//连接对象
public static SqlCommand cmd = new SqlCommand(sql, conn);//执行语句对象
public static SqlDataAdapter sda = new SqlDataAdapter(cmd);//数据适配器
public static DataSet ds = new DataSet();//数据集
public static SqlCommandBuilder scb = new SqlCommandBuilder(sda);//有这个才能使用updata更新
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
//打开数据库连接
conn.Open();
ds.Tables.Clear();
sda.Fill(ds, "login");//利用fill方法将数据填入数据集
dataGridView1.DataSource = ds.Tables["login"];
//设置单元格属性
//单击单元格或行标题可以选中整行
this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
conn.Close();
}
//删除功能按钮实现,不涉及数据库源数据,只是修改展示数据
private void btn_Clear_Click(object sender, EventArgs e)
{
conn.Open();
try
{
int iCount = dataGridView1.SelectedRows.Count;//获取单元格行数
if (iCount<1)
{
MessageBox.Show("已删除数据", "删除错误", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
if (DialogResult.Yes == MessageBox.Show("是否删除选中的数据?", "提示",
MessageBoxButtons.YesNo, MessageBoxIcon.Information))
{
//循环遍历所有行
// <=确保了最后一行也会被修改
for (int i = 0; i <= this.dataGridView1.Rows.Count - 1; i++)
{
//当前行处于选中状态,则将其删除
if (true == this.dataGridView1.Rows[i].Selected)
this.dataGridView1.Rows.RemoveAt(i);
}
//删除任意行数据后,应该刷新dataGridView表格,使索引值从上至下按大小顺序排序
for (int i = 0; i <dataGridView1.Rows.Count - 1; i++)
{
dataGridView1.Rows[i].Cells[0].Value = i + 1;
}
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
}
private void btn_Sec_Click(object sender, EventArgs e)//保存按钮
{
conn.Open();
sda.AcceptChangesDuringUpdate = true;//写也可以,不行也可以
//利用try catch方法进行尝试
try
{
sda.Update(ds, "login");//利用updata更新数据集,会自动更新到数据库里面
MessageBox.Show("保存成功!");
}
catch
{
MessageBox.Show("保存失败!");
}
conn.Close();
}
private void btn_Rem_Click(object sender, EventArgs e)//刷新按钮
{
conn.Open();
ds.Tables.Clear();
sda.Fill(ds, "login");
dataGridView1.DataSource = ds.Tables["login"];
conn.Close();
}
}
}
注意事项:messageBox用作提示测试很好