/* 程序问题注释开始
程序的版权和版本声明部分
Copyright © 2020,湖南工程职业技术学院信息工程学院学生
文件名称: 日常巩固
作 者: 李 斌
完成日期: 2020 年 05 月 23日
对任务及求解方法的描述部分
问题描述
实现封装效果
InitConnection 数据库连接
GetDataReader 读取数据
GetDataTable 获取数据表
ExecuteNonQuery 执行增删改 (以增加用户为例)
ExecuteScalar 执行聚合函数
程序问题注释结束
*/
Program.cs+DBHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//给数据库连接字符串赋值
DBHelper.connString = "server=.;database=GameBoxDB;integrated security=true";
//给sql命令字符串赋值
DBHelper.sqlString = "select * from Products";
//调用GetDataReader方法
DBHelper.GetDataReader();
//输出表头
Console.WriteLine("序号\t游戏名称\t游戏价格\t库存数量\t小计");
Console.WriteLine("===================================================================");
//循环输入DataReader内容
while (DBHelper.reader.Read())
{
//小计
double subtotal = double.Parse(DBHelper.reader["Price"]. ToString()) * double.Parse(DBHelper.reader["Stock"].ToString());
Console.WriteLine(DBHelper.reader["ID"] + "\t" + DBHelper.reader["Name"] + "\t"+string.Format("{0:C}",DBHelper.reader["Price"])+ "\t\t" + DBHelper.reader["Stock"] + "\t\t" + subtotal.ToString("C"));
}
//关闭reader对象
DBHelper.reader.Close();
//给sql命令字符串赋值
DBHelper.sqlString = "select * from Products";
//调用GetDatatable方法
DBHelper.GetDataTable();
//添加用户账号
Console.WriteLine("请输入用户账号:");
string loginId = Console.ReadLine();
//添加用户密码
Console.WriteLine("请输入用户密码:");
string loginPwd = Console.ReadLine();
//添加用户名称
Console.WriteLine("请输入用户名称:");
string name = Console.ReadLine();
//给sql命令字符串赋值
DBHelper.sqlString = string.Format("insert Admins values('{0}', '{1}', '{2}')", loginId, loginPwd, name);
//调用ExecuteNonQuery方法
string nonQuery = DBHelper.ExecuteNonQuery();
//输出受影响的行数
Console.WriteLine(nonQuery);
//给sql命令字符串赋值
DBHelper.sqlString = "select count(*) from Admins";
//调用ExecuteScalar方法
string scalar = DBHelper.ExecuteScalar().ToString();
//输出首行首列的值
Console.WriteLine(scalar);
}
}
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class DBHelper
{
//定义连接字符串
public static string connString;
//定义连接对象
private static SqlConnection conn = null;
//定义sql命令字符串
public static string sqlString;
//定义reader对象
public static SqlDataReader reader;
//定义DataTable对象
public static DataTable dataTable;
private static void InitConnection()
{
//连接对象不存在
if (conn == null)
{
//创建数据库连接对象
conn = new SqlConnection(connString);
}
//连接状态关闭
if (conn.State == ConnectionState.Closed)
{
//打开数据库连接
conn.Open();
}
//中断重新打开
if (conn.State == ConnectionState.Broken)
{
//关闭数据库连接
conn.Close();
//打开数据库连接
conn.Open();
}
}
public static void GetDataReader()
{
//连接数据库
InitConnection();
//创建sql命令对象
SqlCommand cmd = new SqlCommand(sqlString,conn);
//返回并在关闭reader对象同时关闭数据库连接
reader =cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
public static void GetDataTable()
{
//连接数据库
InitConnection();
//创建DataTable对象
dataTable = new DataTable();
//创建DataAdapter对象
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlString,conn);
//填充dataTable对象
dataAdapter.Fill(dataTable);
//关闭数据库连接
conn.Close();
}
public static string ExecuteNonQuery()
{
//连接数据库
InitConnection();
//创建sql命令对象
SqlCommand cmd = new SqlCommand(sqlString, conn);
//返回是否执行成功
if (cmd.ExecuteNonQuery() > 0)
{
return "执行成功!";
}
return "执行失败!";
}
public static Object ExecuteScalar()
{
//连接数据库
InitConnection();
//创建sql命令对象
SqlCommand cmd = new SqlCommand(sqlString, conn);
//返回执行sql命令值
return cmd.ExecuteScalar();
}
}
}