您的位置:首页 > 数据库

C#中对数据库的基本操作(增删改以及调用存储过程)

2018-03-07 14:54 721 查看
因为最近在写web API的时候需要对数据库操作,所以要用到ADO.NET,因为之前没有接触过.NET所以也是一边上网查资料看C#书一边写,现在对这块基础的部分已经掌握了,现在写下来只是想对自己前段时间的学习做个简单的总结,也便于自己以后查阅(网上有很多类似的资源,大家可以都看看)//下面的例子中提到的数据库名字是User,表名是User1(USERNAME,USERPASSWORD)1、数据库连接以及打开数据库这是你对数据库操作的第一步,就是首先你要连接上数据库,然后打开数据库,才可以对数据库进行简单的操作,我用到的开发工具是VS2015以及SQL SEREVER 2014(都是最新的开发工具)首先我们需要用VS2015建立一个c#的控制台应用程序,我们必须要包含两个using 指令using System.Data和using System.Data.SqlClient(注意SqlClient是因为我选用的DBMS为SQL SEREVER,假如我们需要连接的数据库是mysql那么就应该用MySqlClient)接着我们需要建立一个连接数据库对象 SqlConnection conn = new SqlConnection(),然后conn对象里有个叫ConnectionString(连接字符串·)的属性,实际上是一个特殊的string类型的字符串,这个属性后面赋值的字符串有固定的格式,我们不能自己随便写,否则在编译器会报错,在这里我只介绍一下最常用的最简单的一种方法。conn.ConnectionString = "Server=服务器名字;DataBase=数据库名字;uid=sa;pwd=;",uid表示用户名字,也可以写作user id;pwd是密码,也可以写作 password;这里需要说明的一下的是这种是用sa登陆方式,如果采用windows用户直接登陆就不可以这样写,具体的方法,请读者自己下去查阅资料。如果调试没有报错,那么我们就证明已经成功连接上数据库了,我们对数据库操作,仅仅连接上数据库是不行的,我们还需要打开数据库,这个时候需要用 conn.Open()来打开数据库,如果我们想证明我们是不是成功打开了数据库,那么可以 用 Console.WriteLine(conn.State)来打印一下查看一下,如果为open则打开,否则没有。现在我附上自己写的代码方便大家自己下去练习和理解static void TestingConnection()
        {
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = "Server=PC-20161018ZOVK\\SQLEXPRESS;DataBase=User;uid=sa;pwd=zh1996;";
            try
            {
                Console.WriteLine(conn.State);
                conn.Open();
                Console.WriteLine(conn.State);
            }
            catch(SqlException ex)
            {
                Console.WriteLine("数据库操作异常!");
                Console.WriteLine(ex.Message);

            }
            finally
            {
                if (conn.State != ConnectionState.Closed)
                    conn.Close();

            }
            Console.WriteLine(conn.State);

        }

2、数据库的增实际上就是向数据库插入一条或者多条数据。首先应该定义一个string 类型的sql语句(string sql = "insert into User1(USERNAME,USERPASSWORD) VALUES(@USERNAME,@USERPASSWORD)")这里还需要提醒一下的是,不要忘记写values里面参数前面的@字符,否则是没法插入成功的。接着再定义一个SqlCommand的对象( SqlCommand cmd = new SqlCommand(sql,conn));需要向数据库插入username和userpassword,需要分别定义两个 SqlParameter对象( SqlParameter parn = new SqlParameter("@USERNAME", "ZHANG1");)对参数赋值之后我们需要插入到数据库( cmd.Parameters.Add(parn);)同样的道理对userpassword也是一样,在这里就不一一举例子了,后面会附上完整代码。那么我们怎么确定自己插入成功了呢?在cmd对象里一个方法叫ExecuteNonQuery(),如果它的值大于1那么就证明插入成功了,否则失败。我们可以最后打印一下ExecuteNonQuery()的结果。还有一点细节很重要,就是在对数据库操作后要断开与数据库的连接。 //插入数据
       static void Insert(SqlConnection conn)
        {
            string sql = "insert into User1(USERNAME,USERPASSWORD) VALUES(@USERNAME,@USERPASSWORD)";
            SqlCommand cmd = new SqlCommand(sql,conn);
            SqlParameter parn = new SqlParameter("@USERNAME", "ZHANG1");
            cmd.Parameters.Add(parn);
            SqlParameter parm = new SqlParameter("@USERPASSWORD", "12344");
            cmd.Parameters.Add(parm);
            int result = cmd.ExecuteNonQuery();
            Console.WriteLine(result);
            conn.Dispose();
        }
3、数据库的删和更新对数据库的删除和更新就简单了。就是简单的写一个sql语句然后在 SqlCommand对象中调用一下就ok了。我就不细说了,附上代码应该很容易就可以看懂。对数据的删 //数据的删除
        static void Delete(SqlConnection conn)
        {
            string sql="DELETE FROM User1 WHERE USERNAME='张顾远';";
            SqlCommand cmd = new SqlCommand(sql, conn);
            Console.WriteLine(cmd.ExecuteNonQuery());
        }
对数据的更新 //数据的更新
        static void Updata(SqlConnection conn)
        {
            string sql = "update User1 set USERNAME='zhang' where USERNAME='张顾远';";
            SqlCommand cmd = new SqlCommand(sql, conn);
            Console.WriteLine(cmd.ExecuteNonQuery());
        }
4、调用存储过程在c#里调用存储过程相对来说比较麻烦一点,下面我将对这个问题进行详细的讲解。首先应该创建一个SqlCommand 的对象,然后对其赋值第一个参数为存储过程名字,第二个为数据库连接对象(SqlCommand cmd = new SqlCommand("存储过程名字",conn))。然后cmd里有个CommandType的属性对其赋值,选择StoredProcedure表示执行的是存储过程(  cmd.CommandType = CommandType.StoredProcedure;)如果存储过程里包含参数,那么要传参。SQL SEREVER里的存储过程默认为传入参数,假如我在这里调用的存储过程名字是USER(包含两个参数NAME,PWD),传参数与上面的对数据增的过程类似,有部分不相同的就是需要增加额外的信息(SqlParameter n = new SqlParameter("@NAME", SqlDbType.VarChar, 20),第一个为参数名字记得加@,第二个为参数类型,第三个为长度,如果参数类型为int,那么第三个参数我们就不需要写),接着就是对参数赋值了, n.Value = "ZHAG",然后就是将参数添加到命令对象 cmd.Parameters.Add(n);对PWD的处理方法也是和上面一样。 //调用存储过程
        static void PROCEDURE(SqlConnection conn)
        {
            //调用存储过程
            SqlCommand cmd = new SqlCommand("PUSER",conn);
            
            cmd.CommandType = CommandType.StoredProcedure;//告知执行存储过程
            //传参数
           
            SqlParameter parameter = new SqlParameter();
            SqlParameter n = new SqlParameter("@NAME", SqlDbType.VarChar, 20);
            n.Value = "ZHAG";
            cmd.Parameters.Add(n);//将参数添加到命令对象
            SqlParameter p = new SqlParameter("@PWD", SqlDbType.VarChar, 8);
            p.Value = "123";
            cmd.Parameters.Add(p);

            Console.WriteLine(cmd.ExecuteNonQuery());
        }
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySql