不想复制代码,也可以直接百度网盘下载原文件
链接:https://pan.baidu.com/s/1F2179KEvqIArJKNfuajO4A
提取码:ur8q
class Program
{
static void Main(string[] args)
{
SqlServerManager.Instance.Con();
MainInterface();
#region MyRegion
//string constr = "Data Source=61.174.53.11;Initial Catalog=test;User ID=sa;password=jxbs-1934; Integrated Security=False";
//SqlConnection connection = new SqlConnection(constr);
//connection.Open();
//Console.WriteLine("数据库连接成功!");
//string sqlSearch = "select * from account";
//SqlDataAdapter sqlData = new SqlDataAdapter(sqlSearch,connection);//适配器
//DataSet dataSet = new DataSet();//填充
//sqlData.Fill(dataSet,"table1");
//SqlCommandBuilder SCB = new SqlCommandBuilder(sqlData);
//DataRowCollection rows=dataSet.Tables["table1"].Rows;//代表table表的每一行数据的集合
//DataColumnCollection columns=dataSet.Tables["table1"].Columns;//代表table表的列名
////DataRow ds = dataSet.Tables["table1"].NewRow();
////ds[0] = "1002";
////ds[1] = "J";
////ds[2] = "1997";
////ds[3] = "湖北";
////ds[4] = "50";
////rows.Add(ds);
////sqlData.Update(dataSet, "table1");
////dataSet.AcceptChanges();
//Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", columns[0], columns[1], columns[2], columns[3], columns[4]);
//foreach (DataRow item in rows)
//{
// Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", item[0], item[1], item[2], item[3], item[4]);
//}
//Console.ReadKey();
#endregion
}
/// <summary>
/// 监听是否按键
/// </summary>
static void MainInterface()
{
Console.WriteLine("**************************");
Console.WriteLine("* 1. 查看所有数据 *");
Console.WriteLine("* 2. 查看某行数据 *");
Console.WriteLine("* 3. 修改某行数据 *");
Console.WriteLine("* 4. 删除某行数据 *");
Console.WriteLine("* 5. 增加某行数据 *");
Console.WriteLine("**************************");
int code = 0;
if (int.TryParse(Console.ReadLine(), out code))
{
switch (code)
{
//用的委托,不想用委托,直接调用方法也行
case 1:
Carry(SqlServerManager.Instance.AExamine, null);
break;
case 2:
Carry(SqlServerManager.Instance.ALook, "请输入要查看的账号名字:");
break;
case 3:
Carry(SqlServerManager.Instance.FAmend, "请输入要修改的账号名字:","请输入新名字:","请输入新密码:");
break;
case 4:
Carry(SqlServerManager.Instance.FDele, "请输入要删除的账号名字:");
break;
case 5:
Carry(SqlServerManager.Instance.FAdd, "请输入新账号名字:", "请输入新账号密码:");
break;
default:
MainInterface();
break;
}
}
else
{
Console.WriteLine("请选择对应数字的操作!");
MainInterface();
}
}
/// <summary>
/// 执行增删改查
/// </summary>
static void Carry(Delegate @delegate,params string[] message)
{
if(message!=null)
{
for (int i = 0; i < message.Length; i++)
{
Console.WriteLine(message[i]);
string mess= Console.ReadLine();
if(mess!="")
{
message[i] = mess;
}
else
{
Console.WriteLine("不能为空!");
i--;
}
}
Console.WriteLine(@delegate.DynamicInvoke(message) as string);
}
else
{
@delegate.DynamicInvoke();
}
MainInterface();
}
}
自定义数据库操作类
/// <summary>
///说明:test数据库,account表,第一个列为ID主键,一共有五列
/// </summary>
public class SqlServerManager
{
private static SqlServerManager _Instance;//单例
private SqlConnection connection;//定义连接类
private SqlDataAdapter sqlData;//定义适配器
private DataSet dataSet;//定义数据表,用于填充从sqlserver下载的表
private DataRowCollection rows;//定义行
private DataColumnCollection columns;//定义列
public Action<string> ALook;//委托,查看某行
public Action AExamine;//委托,查看所有
public Func<string, string, string, string> FAmend;//委托,修改某行
public Func<string, string,string> FAdd;//委托,增加某行
public Func<string, string> FDele;//委托,删除某行
private int ID;//主键ID递增
public SqlServerManager()
{
}
public static SqlServerManager Instance//单例
{
get
{
if(_Instance==null)
{
_Instance = new SqlServerManager();
}
return _Instance;
}
}
/// <summary>
/// 连接数据库
/// </summary>
public void Con()
{
//两种连接语句均可
string constr = "Data Source=127.0.0.1;Initial Catalog=test;User ID=sa;password=123456; Integrated Security=False";
string constrTwo = "server=127.0.0.1;database=test;user=sa;pwd=123456";
connection = new SqlConnection(constrTwo);//实例化连接类,并将连接语句作为参数
connection.Open();//打开连接数据库
Console.WriteLine("数据库连接成功!");//打印连接成功
string sqlSearch = "select * from account";//sql语句查询,查询test数据库中的account表
sqlData = new SqlDataAdapter(sqlSearch, connection);//实例化适配器,并将执行语句和连接类作为参数
dataSet = new DataSet();//实例化数据表
sqlData.Fill(dataSet, "table1");//将account表填充进
SqlCommandBuilder SCB = new SqlCommandBuilder(sqlData);//定义此类,才能将虚拟表的数据更新到数据库中
rows = dataSet.Tables["table1"].Rows;//代表table表的每一行数据的集合
columns = dataSet.Tables["table1"].Columns;//代表table表的列名
ALook += Look;//委托定义
AExamine += Examine;//委托定义
FAmend += Amend;//委托定义
FAdd += Add;//委托定义
FDele += Delete;//委托定义
if(dataSet.Tables["table1"].Rows.Count>0)
{
ID = int.Parse(dataSet.Tables["table1"].Rows[dataSet.Tables["table1"].Rows.Count - 1][0].ToString());//读取这张表的最后一行的主键ID数据
}
}
/// <summary>
/// 头显示
/// </summary>
private void HeadShow()
{
Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", columns[0], columns[1], columns[2], columns[3], columns[4]);//显示表的列名
}
/// <summary>
/// 查看行显示
/// </summary>
/// <param name="item"></param>
private void LineShow(DataRow item)
{
Console.WriteLine("{0,-10}{1,-10}{2,-10}{3,-10}{4,-10}", item[0], item[1], item[2], item[3], item[4]);//显示每一行的数据
}
/// <summary>
/// 查看所有
/// </summary>
private void Examine()
{
HeadShow();
foreach (DataRow item in rows)
{
LineShow(item);
}
}
/// <summary>
/// 根据条件,查看某条数据
/// </summary>
/// <param name="name"></param>
private void Look(string name)
{
HeadShow();
foreach (DataRow item in rows)
{
string data = DisposeBlank(item);
if (!string.IsNullOrEmpty(data) && data.Equals(name))
{
LineShow(item);
return;
}
}
}
/// <summary>
/// 修改某行
/// </summary>
private string Amend(string name,string newname,string newpassword)
{
foreach (DataRow item in rows)
{
string data = DisposeBlank(item);
if (!string.IsNullOrEmpty(data) && data.Equals(name))
{
DataRow dataRow = item;
dataRow[2] = newname;
dataRow[3] = newpassword;
sqlData.Update(dataSet, "table1");
dataSet.AcceptChanges();
return "修改成功";
}
}
return "修改失败,请输入正确的账号";
}
/// <summary>
/// 增加一行数据
/// </summary>
/// <returns></returns>
private string Add(string newname, string newpassword)
{
try
{
DataRow dataRow = dataSet.Tables["table1"].NewRow();
dataRow[0] = ++ID;
dataRow[2] = newname;
dataRow[3] = newpassword;
rows.Add(dataRow);
sqlData.Update(dataSet, "table1");
dataSet.AcceptChanges();
return "增加成功";
}
catch (Exception e)
{
newname = e.Message;
}
return newname;
}
/// <summary>
/// 根据条件,删除某行数据
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private string Delete(string name)
{
foreach (DataRow item in rows)
{
string data=DisposeBlank(item);
if (!string.IsNullOrEmpty(data)&&data.Equals(name))
{
item.Delete();
sqlData.Update(dataSet, "table1");
dataSet.AcceptChanges();
return "删除成功";
}
}
return "删除失败,请输入正确的账号";
}
/// <summary>
/// 处理空格问题
/// </summary>
private string DisposeBlank(DataRow item)
{
string data = item[2].ToString();
string newdata = null;
foreach (var value in data)
{
if(value.ToString()!=" ")
{
newdata+= value;
}
}
return newdata;
}
}

本文介绍了一个使用C#进行SQLServer数据库操作的程序,包括连接数据库、查看、增加、修改和删除数据等基本功能。通过单例模式管理数据库连接,使用SqlDataAdapter和SqlCommandBuilder实现数据的增删改查。

被折叠的 条评论
为什么被折叠?



