Asp.Net利用DataSet对数据库的增删改查,以及筛选操作并显示在网页上

首先自行创建一个School数据库,并添加一个Student的数据表,创建一个Default_DataSet.aspx的网页。

我们对数据库的操作封装成一个类,便于以后操作直接调用。

创建一个OperaData类:

    public class OperaData
    {
        SqlConnection conn = null;//定义连接的全局变量
        SqlCommand comm = null;//定义操作命令的全局变量
        SqlDataAdapter Adapter = null;//定义适配器

        //构造函数中实例化对象
        public OperaData()
        {
            conn = new SqlConnection("Server=SERVER-1;DataBase=School;User ID=sa;Password=123456");
            comm = new SqlCommand();
            Adapter = new SqlDataAdapter();
        }
        public DataSet ExecSelect()//数据库查询方法,DataSet为返回类型
        {
            conn.Open();//打开数据库
            comm.CommandType = CommandType.Text;//定义发送到数据库的SQL语句
            comm.CommandText = "select * from Student Order by ID";//定义查询语句
            comm.Connection = conn;//指定SQL命令所指定的数据库连接类
            Adapter.SelectCommand = comm;//定义查询命令
            DataSet ds = new DataSet();
            Adapter.Fill(ds);//填充数据集
            return ds;
        }
        public int Update(DataSet ds) //更新数据库
            //SqlCommandBuilder对象用于生成更新语句,SqlDataAdapter的Update方法用于执行更新数据库
        {
            SqlCommandBuilder scb = new SqlCommandBuilder(Adapter);
            return Adapter.Update(ds);
        }
        public void Complete()//更新,查询,删除数据库后执行统一释放资源
        {
            conn.Dispose();
            comm.Dispose();
            Adapter.Dispose();
        }
        public void InsertData(string Name, string Sex, string Age, string Class)//新增一行
        {
            DataSet ds = ExecSelect();//填充数据集
            DataRow dr = ds.Tables[0].NewRow();//新建一行
            dr["Name"] = Name;
            dr["Sex"] = Sex;
            dr["Age"] = Age;
            dr["Class"] = Class;
            ds.Tables[0].Rows.Add(dr);//数据集中添加行
            Update(ds);//提交更改
            Complete();//释放资源
        }
        public void update_DataSet(string Class)//查询并修改指定位置数据
        {
            DataSet ds = ExecSelect();//填充数据集
            DataTable dt = ds.Tables[0];//选定数据表
            DataRow[] dr = dt.Select("Class= '" + Class + "'");//查询数据
            for(int i = 0; i < dr.Length; i++)
            {
                dr[i]["Age"] = "250";
            }
            Update(ds);//提交更改
            Complete();//释放资源
        }
        public DataSet check_Data(int id)//检索指定具有指定ID的项的筛选,并单独呈现在网页上
        {
            DataSet ds_tmp = new DataSet();//建立一个临时的数据集用来存放筛选的项
            DataSet ds = ExecSelect();//原始填充数据集
            /*Clone和Copy:
             * 使用Copy方法会创建与原DataSet具有相同结构和相同行的新DataSet.
             * 使用Clone方法会创建具有相同结构的新DataSet,但不包含任何行。*/
            ds_tmp = ds.Clone();
            DataTable dt = ds.Tables[0];//选定数据表
            DataRow[] drs = dt.Select("ID='" + id + "'");//查询数据
            foreach(DataRow dr in drs)
            {
                /*NewRow() 创建与该表具有相同架构的新DataRow*/
                ds_tmp.Tables[0].NewRow();
                /*ItemArray:获取或设置行中所有列的值。*/
                ds_tmp.Tables[0].Rows.Add(dr.ItemArray);
            }
            /*AcceptChanges和RejectChanges:
             * 接受或放弃DataSet中所有挂起更改。调用AcceptChanges时,
             * RowState属性值为Added或Modified的所有行的RowState属性都将被设置为UnChanged.
             * 任何标记为Deleted的DataRow对象将从DataSet中删除。
             * 调用RejectChanges时,任何标记为Added的DataRow对象将会被从DataSet中删除,
             * 其他修改过的DatRow对象将返回前一状态。*/
            ds.AcceptChanges();//应用更改
            Complete();//释放资源
            return ds_tmp;//返回筛选表
        }
        public void delete_Data(int id)//删除数据
        {
            DataSet ds = ExecSelect();//填充数据集
            DataTable dt = ds.Tables[0];//选定数据表
            DataColumn[] keys = new DataColumn[1];//创建列的对象
            keys[0] = dt.Columns["ID"];//这里表的第一列为UserName
            dt.PrimaryKey = keys;//绑定主键
            //DataRow[] drs = dt.Select("ID='" + id + "'");//查询数据
            DataRow drs1 = dt.Rows.Find(id);//find方法用于直接通过ID标识来删除项目
            drs1.Delete();//删除表中指定行
            Update(ds);//提交更改
            Complete();//释放资源
        }
    }

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要对数据库进行增删操作,需要使用Java中的JDBC(Java Database Connectivity)技术。JDBC是Java提供的一种用于访问数据库的标准API,可以通过JDBC连接到各种关系型数据库,如MySQL、Oracle、SQL Server等。 下面是一个简单的Java程序示例,演示了如何使用JDBC对数据库进行增删操作: ```java import java.sql.*; public class JdbcDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 1. 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 2. 建立数据库连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); // 3. 创建PreparedStatement对象,执行SQL语句 ps = conn.prepareStatement("select * from student where id=?"); ps.setInt(1, 1); rs = ps.executeQuery(); // 4. 处理询结果 while (rs.next()) { System.out.println(rs.getString("name")); System.out.println(rs.getInt("age")); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 5. 关闭数据库连接 try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 上述代码中,我们首先加载了MySQL的JDBC驱动,然后通过DriverManager获取数据库连接,创建PreparedStatement对象,执行SQL语句并处理询结果,最后关闭数据库连接。 关于如何根据数据库数据画折线图,可以使用Java图形化界面库,如JFreeChart。JFreeChart是一个用Java编写的免费开源图表库,可以用于创建各种类型的统计图表,如折线图、柱状图、散点图等。 下面是一个简单的折线图示例,演示了如何使用JFreeChart根据数据库数据画折线图: ```java import java.sql.*; import org.jfree.chart.*; import org.jfree.chart.plot.*; import org.jfree.data.category.*; public class JFreeChartDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { // 1. 加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); // 2. 建立数据库连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); // 3. 创建PreparedStatement对象,执行SQL语句 ps = conn.prepareStatement("select * from sales"); rs = ps.executeQuery(); // 4. 处理询结果 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); while (rs.next()) { dataset.addValue(rs.getDouble("amount"), "Sales", rs.getString("month")); } JFreeChart chart = ChartFactory.createLineChart("Sales Report", "Month", "Amount", dataset, PlotOrientation.VERTICAL, true, true, false); ChartFrame frame = new ChartFrame("Sales Report", chart); frame.setVisible(true); frame.setSize(800, 600); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 5. 关闭数据库连接 try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 上述代码中,我们首先加载了MySQL的JDBC驱动,然后通过DriverManager获取数据库连接,创建PreparedStatement对象,执行SQL语句并处理询结果,将数据添加到DefaultCategoryDataset对象中,并使用ChartFactory创建折线图,最后使用ChartFrame显示折线图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值