ADO.NET的使用

1、 ADO.NET简介

ADO.NET是.NET Framework中不可缺少的一部分,它是一组类,通过这些类,我们的.NET应用程序就可以访问数据库了。ADO.NET的功能非常强大,它提供了对关系数据库、XML以及其他数据储存的访问,我们的应用程序可以通过ADO.NET连接到这些数据源,对数据进行增删改查。

.NET Framework数据库提供程序的4个核心对象

Connection:建立于特定数据源的连接。

Command:对数据源执行命令。

DataReader:从数据源中读取只进且只读的数据流。

DataAdapter:用数据源填充DataSet并解析更新。

1.1 认识Connection对象

有了Connection对象,我们的应用程序就能够连接到数据库了。

Connection对象的主要属性和方法

ConnectionString属性:用于连接数据库的连接字符串。

Open方法:使用ConnectionString属性所指定的设置打开数据库连接。

Close方法:关闭与数据库的连接。

1.2 认识Command对象

Command对象的主要属性

Connection属性:Command对象使用的数据库连接。

CommandText属性:执行的SQL语句。

Command对象的主要方法

ExecuteNonQuery方法:执行不返回行的语句,如UPDATE等。

ExecuteReader方法:执行查询命令,返回DataReader对象。

ExecuteScalar方法:返回单个值,如执行COUNT(*)。

2、 ADO.NET使用

2.1 配置数据库连接字符串

数据库连接属于站点级的配置,所以我们一般将其储存在web.config文件中。

<connectionStrings>
  <add name="MyDB" connectionString="Data Source=.;Initial Catalog=MyStudy;User ID=sa;pwd=123456" providerName="System.Data.SqlClient"/>
</connectionStrings>

2.2 创建DBHelper.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace MyStudy.DAL
{
    public static class DBHelper
    {
        private static SqlConnection connection;
        public static SqlConnection Connection
        {
            get
            {
                string connectionString = ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;
                if (connection == null)
                {
                    connection = new SqlConnection(connectionString);
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Closed)
                {
                    connection.Open();
                }
                else if (connection.State == System.Data.ConnectionState.Broken)
                {
                    connection.Close();
                    connection.Open();
                }
                return connection;
            }
        }

        #region 执行SQL语句
        /// <summary>
        /// 执行无参数的SQL语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <returns>返回受SQL语句影响的行数</returns>
        public static int ExecuteCommand(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            int result = cmd.ExecuteNonQuery();
            connection.Close();
            return result;
        }

        /// <summary>
        /// 执行有参数的SQL语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="values">参数集合</param>
        /// <returns>返回受SQL语句影响的行数</returns>
        public static int ExecuteCommand(string sql, params SqlParameter[] values)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(values);
            int result = cmd.ExecuteNonQuery();
            connection.Close();
            return result;
        }

        /// <summary>
        /// 返回单个值无参数的SQL语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <returns>返回受SQL语句查询的行数</returns>
        public static int GetScalar(string sql)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            connection.Close();
            return result;
        }

        /// <summary>
        /// 返回单个值有参数的SQL语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="parameters">参数集合</param>
        /// <returns>返回受SQL语句查询的行数</returns>
        public static int GetScalar(string sql, params SqlParameter[] parameters)
        {
            SqlCommand cmd = new SqlCommand(sql, Connection);
            cmd.Parameters.AddRange(parameters);
            int result = Convert.ToInt32(cmd.ExecuteScalar());
            connection.Close();
            return result;
        }

        /// <summary>
        /// 执行查询无参数SQL语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <returns>返回数据集</returns>
        public static DataSet GetReader(string sql)
        {
            SqlDataAdapter da = new SqlDataAdapter(sql, Connection);
            DataSet ds = new DataSet();
            da.Fill(ds);
            connection.Close();
            return ds;
        }

        /// <summary>
        /// 执行查询有参数SQL语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="parameters">参数集合</param>
        /// <returns>返回数据集</returns>
        public static DataSet GetReader(string sql, params SqlParameter[] parameters)
        {
            SqlDataAdapter da = new SqlDataAdapter(sql, Connection);
            da.SelectCommand.Parameters.AddRange(parameters);
            DataSet ds = new DataSet();
            da.Fill(ds);
            connection.Close();
            return ds;
        }
        #endregion

        #region 执行存储过程
        /// <summary>
        /// 执行无参数的存储过程
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <returns>返回受SQL语句影响的行数</returns>
        public static int ExecuteCommandProc(string spName)
        {
            int result = 0;
            SqlCommand cmd = new SqlCommand(spName, Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            result = cmd.ExecuteNonQuery();
            cmd.Clone();
            return result;
        }

        /// <summary>
        /// 执行有参数的存储过程
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <param name="parameters">参数集合</param>
        /// <returns>返回受SQL语句影响的行数</returns>
        public static int ExecuteCommandProc(string spName, params SqlParameter[] parameters)
        {
            int result = 0;
            SqlCommand cmd = new SqlCommand(spName, Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddRange(parameters);
            result = cmd.ExecuteNonQuery();
            cmd.Clone();
            return result;
        }

        /// <summary>
        /// 返回单个值无参数的存储过程
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <returns>返回受SQL语句查询的行数</returns>
        public static int GetScalarProc(string spName)
        {
            int result = 0;
            SqlCommand cmd = new SqlCommand(spName, Connection);
            cmd.CommandType = CommandType.StoredProcedure;
            result = Convert.ToInt32(cmd.ExecuteScalar());
            cmd.Clone();
            return result;

        }

        /// <summary>
        /// 返回单个值有参数的存储过程
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <param name="parameters">参数集合</param>
        /// <returns>返回受SQL语句查询的行数</returns>
        public static int GetScalarProc(string spName, params SqlParameter[] parameters)
        {
            int result = 0;
            SqlCommand cmd = new SqlCommand(spName, Connection);
            cmd.Parameters.AddRange(parameters);
            cmd.CommandType = CommandType.StoredProcedure;
            result = Convert.ToInt32(cmd.ExecuteScalar());
            cmd.Clone();
            return result;
        }

        /// <summary>
        /// 执行查询无参数存储过程名
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <returns>返回数据集</returns>
        public static DataSet GetDataSetProc(string spName)
        {
            SqlDataAdapter da = new SqlDataAdapter(spName, Connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds;
        }


        /// <summary>
        /// 执行查询有参数存储过程名
        /// </summary>
        /// <param name="spName">存储过程名</param>
        /// <param name="parameters">参数集合</param>
        /// <returns>返回数据集</returns>
        public static DataSet GetDataSetProc(string spName, params SqlParameter[] parameters)
        {
            SqlDataAdapter da = new SqlDataAdapter(spName, Connection);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddRange(parameters);
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds;
        }
        #endregion
    }
}

2.3 使用SQL语句执行操作

/// <summary>
/// 查询用户列表
/// </summary>
public List<UserInfo> GetUserList()
{
    List<UserInfo> userList = new List<UserInfo>();
    string sql = "SELECT * FROM UserInfo";
    DataSet dateSet = DBHelper.GetReader(sql);
    userList = TranUserList(dateSet);
    return userList;
}

/// <summary>
/// 获取用户总数
/// </summary>
public int GetUserCount()
{
    int result = 0;
    string sql = "SELECT COUNT(*) FROM UserInfo";
    result = DBHelper.GetScalar(sql);
    return result;
}

/// <summary>
/// 新增用户信息
/// </summary>
public int AddUserInfo(UserInfo param)
{
    int result = 0;
    string sql = "INSERT INTO UserInfo(UserName,Age,Address) VALUES(@UserName,@Age,@Address)";
    SqlParameter[] sqlParam = new SqlParameter[]
    {
		new SqlParameter("@UserName", param.UserName), 
		new SqlParameter("@Age", param.Age),
        new SqlParameter("@Address",param.Address)
	};
    result = DBHelper.ExecuteCommand(sql, sqlParam);
    return result;
}

/// <summary>
/// 修改用户信息
/// </summary>
public int UpdateUserInfo(UserInfo param)
{
    int result = 0;
    if (param.UserId > 0)
    {
        string sql = "UPDATE UserInfo SET UserName=@UserName,Age=@Age,Address=@Address WHERE UserId=@UserId";
        SqlParameter[] sqlParam = new SqlParameter[]
        {
		    new SqlParameter("@UserId",param.UserId),
            new SqlParameter("@UserName", param.UserName), 
		    new SqlParameter("@Age", param.Age),
            new SqlParameter("@Address",param.Address)
	    };
        result = DBHelper.ExecuteCommand(sql, sqlParam);
    }
    return result;
}

/// <summary>
/// 删除用户信息
/// </summary>
public int DeleteUserInfo(UserInfo param)
{
    int result = 0;
    if (param.UserId > 0)
    {
        string sql = "DELETE UserInfo WHERE UserId=@UserId";
        SqlParameter[] sqlParam = new SqlParameter[]
        {
		    new SqlParameter("@UserId",param.UserId),
	    };
        result = DBHelper.ExecuteCommand(sql, sqlParam);
    }
    return result;
}

2.4 使用储存过程执行操作

/// <summary>
/// 查询用户列表
/// </summary>
public List<UserInfo> GetUserList()
{
    List<UserInfo> userList = new List<UserInfo>();
    string spName = "Proc_GetUserList";
    DataSet dateSet = DBHelper.GetDataSetProc(spName);
    userList = TranUserList(dateSet);
    return userList;
}

/// <summary>
/// 获取用户总数
/// </summary>
public int GetUserCount()
{
    int result = 0;
    string spName = "Proc_GetUserCount";
    result = DBHelper.GetScalarProc(spName);
    return result;
}

/// <summary>
/// 新增用户信息
/// </summary>
public int AddUserInfo(UserInfo param)
{
    int result = 0;
    string spName = "Proc_AddUserInfo";
    SqlParameter[] sqlParam = new SqlParameter[]
    {
        new SqlParameter("@UserName", param.UserName), 
        new SqlParameter("@Age", param.Age),
        new SqlParameter("@Address",param.Address)
    };
    result = DBHelper.ExecuteCommandProc(spName, sqlParam);
    return result;
}

/// <summary>
/// 修改用户信息
/// </summary>
public int UpdateUserInfo(UserInfo param)
{
    int result = 0;
    if (param.UserId > 0)
    {
        string spName = "Proc_UpdateUserInfo";
        SqlParameter[] sqlParam = new SqlParameter[]
        {
		    new SqlParameter("@UserId",param.UserId),
            new SqlParameter("@UserName", param.UserName), 
		    new SqlParameter("@Age", param.Age),
            new SqlParameter("@Address",param.Address)
	    };
        result = DBHelper.ExecuteCommandProc(spName, sqlParam);
    }
    return result;
}

/// <summary>
/// 删除用户信息
/// </summary>
public int DeleteUserInfo(UserInfo param)
{
    int result = 0;
    if (param.UserId > 0)
    {
        string spName = "Proc_DeleteUserInfo";
        SqlParameter[] sqlParam = new SqlParameter[]
        {
		    new SqlParameter("@UserId",param.UserId),
	    };
        result = DBHelper.ExecuteCommandProc(spName, sqlParam);
    }
    return result;
}

将DataSet转换成List

/// <summary>
/// 转换成列表
/// </summary>
public List<UserInfo> TranUserList(DataSet dateSet)
{
    List<UserInfo> resultList = new List<UserInfo>();
    if (dateSet != null)
    {
        //遍历DataSet
        foreach (DataRow row in dateSet.Tables[0].Rows)
        {
            UserInfo user = new UserInfo();
            if (dateSet.Tables[0].Columns.Contains("UserId") && !Convert.IsDBNull(row["UserId"]))
                user.UserId =  Convert.ToInt32(row["UserId"]);

            if (dateSet.Tables[0].Columns.Contains("UserName") && !Convert.IsDBNull(row["UserName"]))
                user.UserName = Convert.ToString(row["UserName"]);

            if (dateSet.Tables[0].Columns.Contains("Age") && !Convert.IsDBNull(row["Age"]))
                user.Age = Convert.ToInt32(row["Age"]);

            if (dateSet.Tables[0].Columns.Contains("Address") && !Convert.IsDBNull(row["Address"]))
                user.Address = Convert.ToString(row["Address"]);

            resultList.Add(user);
        }
    }
    return resultList;
}

UserInfo实体类

public class UserInfo
{
    public int UserId { get; set; }
    public string UserName { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}

2.5 其他

创建存储过程的SQL脚本

/*---创建查询用户存储过程----*/
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'Proc_GetUserList' )
  DROP PROCEDURE  Proc_GetUserList
GO
CREATE PROCEDURE Proc_GetUserList
	AS
		SELECT * FROM UserInfo
GO

/*---创建获取用户总数存储过程----*/
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'Proc_GetUserCount' )
  DROP PROCEDURE  Proc_GetUserCount
GO
CREATE PROCEDURE Proc_GetUserCount
	AS
		SELECT COUNT(*) FROM UserInfo
GO

/*---创建新增用户存储过程----*/
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'Proc_AddUserInfo' )
  DROP PROCEDURE  Proc_AddUserInfo
GO
CREATE PROCEDURE Proc_AddUserInfo
	@UserName VARCHAR(50),
	@Age INT,
	@Address VARCHAR(50)
	AS
		INSERT INTO UserInfo(UserName,Age,Address) VALUES(@UserName,@Age,@Address)
GO

/*---创建修改用户存储过程----*/
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'Proc_UpdateUserInfo' )
  DROP PROCEDURE  Proc_UpdateUserInfo
GO
CREATE PROCEDURE Proc_UpdateUserInfo
	@UserId INT,
	@UserName VARCHAR(50),
	@Age INT,
	@Address VARCHAR(50)
	AS
		UPDATE UserInfo SET UserName=@UserName,Age=@Age,Address=@Address WHERE UserId=@UserId
GO

/*---创建删除用户存储过程----*/
IF EXISTS (SELECT * FROM sysobjects WHERE name = 'Proc_DeleteUserInfo' )
  DROP PROCEDURE  Proc_DeleteUserInfo
GO
CREATE PROCEDURE Proc_DeleteUserInfo
	@UserId INT
	AS
		DELETE UserInfo WHERE UserId=@UserId
GO

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值