• 事务----1


    1.使用命令参数:
    cmd.CommandText = ".....@uid ....";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@uid","值")
    cmd.ExecuteXXXXX();

    2.ExecuteScalar()执行SQL语句,返回首行首列中的值。
    它一般用来执行聚合函数的查询。

    3.事务Transaction
    ACID - A原子性。C一致性。I-隔离性。D持久性。
    两类事务:
    (一)链接内事务:在链接打开后,使用事务控制多条语句的执行。
    1.创建事务对象。
    SqlTransanction trans = conn.BeginTransaction(); //注意必须是链接打开后编写
    2.把事务对象挂到命令对象上,让命令执行带有事务的功能。
    cmd.Transaction = trans;

    3.按照之前所讲得执行命令操作数据库
    a.成功后调用事务对象的Commit()方法来提交执行的结果。
    b.失败后调用事务对象的Rollback()方法来回滚执行前的状态。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Data;
    using System.Data.SqlClient;

    namespace lian_CommandBehavior
    {
    class lian_shiwu
    {
    public const string AB = "server=.;database=wo0505;uid=sa;pwd=123";
    public static void Main11(string[] args)
    {
    Show();
    Shanchu();
    Show();
    Console.ReadLine();
    }
    public static void Shanchu()//删除相应的有外键的信息
    {
    Console.Write("请输入需要删除的人员的编号");
    string co = Console.ReadLine();
    string ok = "";
    ok = Yancode(co);
    if (ok == "cun")
    {
    SqlConnection con = new SqlConnection(AB);
    try
    {
    con.Open();
    SqlCommand cmd = con.CreateCommand();
    SqlTransaction tran = con.BeginTransaction();
    cmd.Transaction = tran;
    try
    {
    cmd.CommandText = "delete from Family where InfoCode=@c";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@c", co);
    cmd.ExecuteNonQuery();


    cmd.CommandText = "delete from Work where InfoCode=@c";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@c", co);
    cmd.ExecuteNonQuery();


    cmd.CommandText = "delete from Info where Code=@a";
    cmd.Parameters.Clear();
    cmd.Parameters.AddWithValue("@c", co);
    cmd.ExecuteNonQuery();
    tran.Commit();
    }
    catch
    {
    Console.WriteLine("删除未成功,返回执行前的数据!");
    tran.Rollback();
    }

    }
    catch
    {
    Console.WriteLine("未删除!");
    }
    finally
    {
    con.Close();
    }
    }
    else { Console.WriteLine("您输入的编号不存在!"); }
    }
    public static string Yancode(string code)//验证是否存在相应的信息
    {
    string ok = "cun";
    SqlConnection con = new SqlConnection(AB);
    try
    {
    con.Open();
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandText = "select * from Info";
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    if(dr["Code"].ToString()==code)
    {
    ok="cun";
    }
    else { ok="bu"; }
    }

    }
    catch
    {
    Console.WriteLine("文件错误!");
    }
    finally
    {
    con.Close();
    }
    return ok;
    }
    public static void Show()//显示该表的所有信息
    {
    SqlConnection con = new SqlConnection(AB);
    try
    {
    con.Open();
    SqlCommand cmd = con.CreateCommand();
    cmd.CommandText = "select * from Info";
    SqlDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    string sex=((bool)dr["Sex"])?"男":"女";
    string date = ((DateTime)dr["Birthday"]).ToString("yyyy年MM月dd日");
    Console.WriteLine(dr["Code"].ToString() + " " + dr["Name"].ToString() + " " + sex + " " + dr["Nation"].ToString() + " " + date);
    }

    }
    catch (Exception)
    {
    Console.WriteLine("文件错误!");
    }
    finally
    {
    con.Close();
    }
    }
    }
    }

  • 相关阅读:
    inline, block, and inline-block
    分布式/集群/负载均衡的基本概念与区别
    Java获取当前进程的所有线程
    关于测试Windows电脑端口的命令 —— telnet用法
    关于 ArtifactTransferException: Failure to transfer
    Maven项目报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Java去除掉HTML里面所有标签的两种方法——开源jar包和自己写正则表达式
    SQL(基于MySQL)——LIMIT用法
    毕业设计进度:2月13日
    毕业设计进度:2月12日
  • 原文地址:https://www.cnblogs.com/xianshui/p/4489335.html
Copyright © 2020-2023  润新知