知识点描述:

 1、对数据 库进行非连接式查询操作,返回多条记录,通过SqlDataAdapter对象的Fill方法完成, 把查询得到的结果填充到DateTable(DateSet)对象中。

2、对数据库进行连接式查询操作,返回多条查询记录,通过SqlCommand对象的ExcuteReader方法来完成,返回SQLDateReader对象

3、从数据库中检索单个值,通过Sqlcommand对象的ExcuteScalar方法来完成。需要根据实际情况进行类型的转换

4、对数据库进行增,删,改操作。通过SqlCommand对象的ExcuteNonQuery方法完成。返回数据库中受影响的行数。

 

 

思维导图:

 

Java前端如何获取数据库数据 前端怎么读取数据库_SQL

 

 

示例效果图:(向数据库中添加数据)

Java前端如何获取数据库数据 前端怎么读取数据库_sql_02

 

Java前端如何获取数据库数据 前端怎么读取数据库_sql_03

示例窗体代码;

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;namespace 电子病历系统
{
    public partial class 入院记录 : Form
    {
        public 入院记录()
        {
            InitializeComponent();
        }



private void 返回ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            首页 f2 = new 首页();
            this.Hide();
            f2.Show();
        }        private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                               //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;                              //配置管理器从配置文件读取连接字符串,并将之赋予SQL连接的连接字符串属性;
            SqlCommand sqlCommand = new SqlCommand();                                                        //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText ="INSERT 入院记录 (姓名,性别,年龄,科室,住院号,床号,入院时间,记录时间,出生地,婚姻,职业,民族,病情陈诉者,主诉,现病史,既往史,个人史,遗传史,过敏史,医生签名)VALUES(@姓名,@性别,@年龄,@科室,@住院号,@床号,@入院时间,@记录时间,@出生地,@婚姻,@职业,@民族,@病情陈诉者,@主诉,@现病史,@既往史,@个人史,@遗传史,@过敏史,@医生签名);";
            sqlCommand.Parameters.AddWithValue("@姓名", cob_姓名 .Text.Trim());                         //向SQL命令的参数集合添加参数的名称、值;
            sqlCommand.Parameters.AddWithValue("@性别", cob_性别.SelectedItem);
            sqlCommand.Parameters.AddWithValue("@年龄", txt_年龄 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@科室", cob_科室.SelectedItem); 
            sqlCommand.Parameters.AddWithValue("@住院号", txt_住院号.Text.Trim());
            sqlCommand.Parameters.AddWithValue("@床号", cob_床号.SelectedItem);            sqlCommand.Parameters.AddWithValue("@入院时间", txt_入院时间 .Text.Trim());            //向SQL命令的参数集合添加参数的名称、值;
            sqlCommand.Parameters.AddWithValue("@记录时间", txt_记录时间 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@出生地", txt_出生地 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@婚姻", cob_婚姻.SelectedItem);
            sqlCommand.Parameters.AddWithValue("@职业", txt_职业 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@民族", cob_民族.SelectedItem);            sqlCommand.Parameters.AddWithValue("@病情陈诉者", cob_病情陈诉者.SelectedItem);          //向SQL命令的参数集合添加参数的名称、值;
            sqlCommand.Parameters.AddWithValue("@主诉",txt_主诉 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@现病史", txt_现病史 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@既往史",txt_既往史 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@个人史", txt_个人史 .Text.Trim());
            sqlCommand.Parameters.AddWithValue("@遗传史", txt_遗传史 .Text.Trim());sqlCommand.Parameters.AddWithValue("@过敏史", txt_过敏史 .Text.Trim());
sqlCommand.Parameters.AddWithValue("@医生签名", txt_医生签名 .Text.Trim());
            
            sqlConnection.Open();                 //打开SQL连接;
            int rowAffected = sqlCommand.ExecuteNonQuery();            //调用SQL命令的方法ExecuteNonQuery来执行命令,向数据库写入数据,并返回受影响行数;
            sqlConnection.Close();              //关闭SQL连接;
            MessageBox.Show("保存成功");             //在消息框显示受影响行数;
        }
}
}

 

Java前端如何获取数据库数据 前端怎么读取数据库_Java前端如何获取数据库数据_04

Java前端如何获取数据库数据 前端怎么读取数据库_Java前端如何获取数据库数据_05

示例窗体代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
                                                                                                            //添加调用:
using System.Data.SqlClient;                                                                                //包含访问SQL Server所需的各类对象;namespace Ex53_Table_Search
{

    public partial class frm_CourseTable : Form
    {        /// <summary>
        /// 私有字段:课程数据表;
        /// </summary>
        private DataTable CourseTable;        /// <summary>
        /// 私有字段:先修课程数据表;
        /// </summary>
        private DataTable PreCourseTable;        /// <summary>
        /// 私有字段:按名称排序的课程数据视图;
        /// </summary>
        private DataView CourseViewByName;        /// <summary>
        /// 公有方法:构造函数;
        /// </summary>
        public frm_CourseTable()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;                                            //本窗体启动位置设为屏幕中央; 
            this.dgv_Course.AllowUserToAddRows = false;                                                     //数据网格视图不允许用户添加行;
            this.dgv_Course.RowHeadersVisible = false;                                                      //数据网格视图的行标题不可见;
            this.dgv_Course.BackgroundColor = Color.White;                                                  //数据网格视图的背景色设为白色;
            this.dgv_Course.AutoSizeColumnsMode =
                DataGridViewAutoSizeColumnsMode.AllCells;                                                   //数据网格视图的自动调整列宽模式设为显示所有单元格;
        }

/// <summary>
        /// 私有方法:点击载入按钮;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_Load_Click(object sender, EventArgs e)
        {
            SqlConnection sqlConnection = new SqlConnection();                                              //声明并实例化SQL连接;
            sqlConnection.ConnectionString =
                ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;                        
            SqlCommand sqlCommand = new SqlCommand();                                                       //声明并实例化SQL命令;
            sqlCommand.Connection = sqlConnection;                                                          //将SQL命令的连接属性指向SQL连接;
            sqlCommand.CommandText = "SELECT * FROM tb_Course;";                                            //指定SQL命令的命令文本;该命令查询所有课程,以用作数据网格视图数据源;
            SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();                                           //声明并实例化SQL数据适配器;
            sqlDataAdapter.SelectCommand = sqlCommand;                                                      //将SQL数据适配器的查询命令属性指向SQL命令;
            sqlDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;                            //设置SQL数据适配器在缺少架构时的动作为追加主键,从而获取数据库中定义的主键;
            this.CourseTable = new DataTable();                                                             //实例化本窗体的课程数据表,用于保存所有课程,以用作数据网格视图数据源;
            sqlConnection.Open();                                                                           //打开SQL连接;
            sqlDataAdapter.Fill(this.CourseTable);                                                          //SQL数据适配器读取数据,并填充课程数据表;
            sqlConnection.Close();                                                                          //关闭SQL连接;
            this.PreCourseTable = this.CourseTable.Copy();                                                  //借助本窗体的课程数据表的方法Copy来复制数据表,并赋予本窗体的先修课程数据表,用作先修课程下拉框的数据源;
            this.CourseViewByName = new DataView();                                                         //实例化本窗体的课程数据视图,用于按照名称进行快速查询;
            this.CourseViewByName.Table = this.CourseTable;                                                 //设置课程数据视图对应的数据表;
            this.CourseViewByName.Sort = "Name ASC";                                                        //设置课程数据视图的排序条件,即查询所覆盖的列;
            this.dgv_Course.Columns.Clear();                                                                //数据网格视图的列集合清空;
            this.dgv_Course.DataSource = this.CourseTable;                                                  //将数据网格视图的数据源设为学生数据表;
            this.dgv_Course.Columns["No"].HeaderText = "编号";                                              //将数据网格视图的指定列的表头文本设为中文;
            this.dgv_Course.Columns["Name"].HeaderText = "名称";
            this.dgv_Course.Columns["Credit"].HeaderText = "学分";
            this.dgv_Course.Columns["StudyType"].HeaderText = "修读类型";
            this.dgv_Course.Columns["ExamType"].HeaderText = "考试类型";
            this.dgv_Course.Columns["Pinyin"].Visible = false;                                              //将数据网格视图的指定列设为不可见;
            this.dgv_Course.Columns["PreCourseNo"].Visible = false; 
            this.dgv_Course.Columns[this.dgv_Course.Columns.Count - 1].AutoSizeMode =                       //数据网格视图的最后一列的自动调整列宽模式设为填充(至数据网格视图右侧边缘);
                DataGridViewAutoSizeColumnMode.Fill;
            DataGridViewComboBoxColumn preCourseColumn = new DataGridViewComboBoxColumn();                  //声明并实例化数据网格视图下拉框列,用于设置先修课程;
            preCourseColumn.Name = "PreCourse";                                                             //设置下拉框列的名称;
            preCourseColumn.HeaderText = "先修课程";                                                        //设置下拉框列的表头文本;
            preCourseColumn.DataSource = this.PreCourseTable;                                               //设置下拉框列的数据源为先修课程数据表;
            preCourseColumn.DisplayMember = "Name";                                                         //设置下拉框列的显示成员为(先修课程数据表的)名称(列);
            preCourseColumn.ValueMember = "No";                                                             //设置下拉框列的值成员为(先修课程数据表的)编号(列);
            preCourseColumn.DataPropertyName = "PreCourseNo";                                               //设置下拉框列的数据属性名称为(课程数据表的)先修课程编号(列);
            preCourseColumn.DisplayIndex = 3;                                                               //设置下拉框列的显示顺序;
            preCourseColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;                             //设置下拉框列的自动调整列宽模式为填充;
            this.dgv_Course.Columns.Add(preCourseColumn);                                                   //将下拉框列加入数据网格视图的列集合;
        }        /// <summary>
        /// 私有方法:点击根据编号搜索按钮;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_SearchByNo_Click(object sender, EventArgs e)
        {
            DataRow searchResultRow = this.CourseTable.Rows.Find(this.txb_CourseNo.Text.Trim());            //借助本窗体的课程数据表的行集合的方法Find,根据主键值(即课程编号)快速查找相应课程,并返回其所在的数据行;但数据行不能作为数据源,需另行创建数据表,并导入该数据行,最后将数据表作为数据源;
            DataTable searchResultTable = this.CourseTable.Clone();                                         //借助本窗体的课程数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;
            searchResultTable.ImportRow(searchResultRow);                                                   //将(复制后的)数据行导入数据表;
            this.dgv_Course.DataSource = searchResultTable;                                                 //将数据网格视图的数据源设为搜索结果数据表;
        }        /// <summary>
        /// 私有方法:点击根据名称搜索按钮;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btn_SearchByName_Click(object sender, EventArgs e)
        {
            DataRowView[] searchResultRowViews = 
                this.CourseViewByName.FindRows(this.txb_CourseName.Text.Trim());                            //借助本窗体的按名称排序的课程数据视图的方法FindRows,根据排序列(即课程名称)快速查找相应课程;由于该列并非主键,可能返回多行查询结果,故返回数据行视图数组;数据行视图数组不能直接作为数据源,需转为列表后方可作为数据源;
            DataTable searchResultTable = this.CourseTable.Clone();                                         //借助本窗体的课程数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;
            foreach (DataRowView dataRowView1 in searchResultRowViews)                                      //遍历搜索结果所在数据行视图数组;
            {
                searchResultTable.ImportRow(dataRowView1.Row);                                              //通过每条数据行视图的属性Row获取相应的数据行,并导入数据表;
            }
            this.dgv_Course.DataSource = searchResultTable;                                                 //将数据网格视图的数据源设为搜索结果数据表;
        }        /// <summary>
        /// 私有方法:拼音文本框的文本更改;
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txb_Pinyin_TextChanged(object sender, EventArgs e)
        {
            DataRow[] searchResultRows =
                this.CourseTable.Select("Pinyin LIKE '%" + this.txb_Pinyin.Text.Trim() + "%'");             //借助本窗体的课程数据表的方法Select,并提供与SQL类似的谓词表达式作为查询条件,根据拼音缩写进行模糊查询(仅支持%通配符);查询将返回数据行数组;
            DataTable searchResultTable = this.CourseTable.Clone();                                         //借助本窗体的课程数据表的方法Clone,创建相同架构的空表,用于保存搜索结果所在数据行;
            foreach (DataRow row in searchResultRows)                                                       //遍历搜索结果所在数据行数组;
            {
                searchResultTable.ImportRow(row);                                                           //数据行导入数据表;
            }
            this.dgv_Course.DataSource = searchResultTable;                                                 //将数据网格视图的数据源设为搜索结果数据表;
        }
    }                                                                                                    
}