在上一文章成功创建连接之后,就可以对数据库进行各种操作了,这些操作是通过已经建立好的连接实时的在线进行的,也叫做“在线访问”,在在线访问中数据库主要依靠Command与DataReader两个对象配合。
工作原理图如下:
期间,要求Connection对象始终保持不掉线,Command对象将SQL封装后提供给应用使用,DataRaeder则实时的在线读取数据源的数据,并且呈现给应用程序。
数据库在线访问实例:
利用Command与DataReader对象相互配合,在线访问C#实验一创建的SXCJ1数据库。
要求:能实现学生记录的添加和实时查看功能。
新建项目WinForm,在Form1设计视图中将窗体调整到合适的大小,各个控件的属性如下:
类型 | 对象名 | 属性名 | 属性值 |
Form | Form1 | Text | 在线访问数据源 |
TextBox | txtAllStu | Multiline | True |
ScrollBars | Vertical | ||
txtStuID | - | - | |
txtName | - | - | |
txtMajor | - | - | |
txtCredit | - | - | |
RadioButton | RbtnMale | Text | 男 |
RbtnFamale | Text | 女 | |
GroupBox | groupBox1 | Text | 输入学生信息 |
Button | btnSearch | Text | 刷新 |
btnInsert | Text | 添加 |
设计后如图:
图3_1
程序完整代码如下:
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 _9_4
{
public partial class Form1 : Form
{
string strcon = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=XSCJDB1;Integrated Security=True";
public Form1()
{
InitializeComponent();
btnSearch_Click(null, null);
}
private void label2_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void btnSearch_Click(object sender, EventArgs e)
{
txtAllStu.Clear();
using(SqlConnection sqlcon = new SqlConnection(strcon))
{
sqlcon.Open();
string sql = "SELECT * FROM XSB";
SqlCommand command = new SqlCommand(sql, sqlcon);
SqlDataReader reader = command.ExecuteReader();
if(reader.HasRows)
{
while(reader.Read())
{
txtAllStu.Text += reader[0].ToString() + reader[1].ToString() + reader[2].ToString() +
reader[3].ToString() + reader[4].ToString() + reader[5].ToString() + "\r\n";
}
}
reader.Close();
}
}
private void btnInsert_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection(strcon);
try
{
string stuID = txtStuID.Text.Trim();
string stuName = txtName.Text.Trim();
string stuXB;
if(RbtnMale.Checked)
{
stuXB = "男";
}
else
{
stuXB = "女";
}
string stuBirthday = dateTimePicker1.Value.ToShortDateString().Split(' ')[0];
string stuMajor = txtMajor.Text.Trim();
string stuCredit = txtCredit.Text.Trim();
SqlCommand command = new SqlCommand();
command.CommandText = "INSERT INTO XSB(Xnum,XM,XB,CSRQ,ZY,ZXF) VALUES('" + stuID + "','" + stuName + "','" + stuXB + "','" + stuBirthday + "','" + stuMajor + "','" + stuCredit + "')";
command.CommandType = CommandType.Text;
command.Connection = sqlcon;
sqlcon.Open();
if(command.ExecuteNonQuery()==1)
{
MessageBox.Show("插入成功!", "消息", MessageBoxButtons.OK);
btnSearch_Click(null, null);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sqlcon.Close();
}
}
}
}
运行程序,初始界面如图3_1所示,下部文本框中显示出数据库XSB表中所有学生信息的列表。
在窗体运行界面上方输入一个新的信息,新信息将会录入数据库中。
此时,界面上的信息会自动刷新,显示出刚刚添加的新记录,用户也可以在任何时候单击“刷新”按钮,查看数据库中记录的动态。
C#的在线访问数据库就是这些了!