C#数据库的一些基本操作 第一篇

基础知识总结:

1、对于数据库中经常用于查询的字段,可以添加创建索引以提高查询的效率,添加索引对其它操作不会有任何的影响。

2、在创建数据库的时候需要注意字段类型的选择,如果存入的数据的长度不确定,可以选择nvarchar类型,如果插入的数据含有中文,需要在值之前添加一个“N”。

3、主键的设置,一般都是设置一个与业务无关的整形数据做为主键,主键不能够为空,如果字段设置为表示字段为真,再插入数据时就可以不用写。

 

数据库的应用:

1、在使用使用数据库的资源时,一般都是用using进行数据库的资源管理,Using会在关闭数据库之前检查是否进行了dispose()函数的操作。dispose是撤销数据库,close是关闭数据库,如果在关闭之前进行了撤销操作,数据库将无法关闭,进而导致程序的崩溃。

2、数据库的连接:database数据库连接方式。

a) 首先创建一个SqlConnection对象,然后通过对象调用ConnectionString连接字符串。再调用Open方法。

b) 在执行SQL操作语句之前应该先通过SqlConnection对象调用CreateCommand方法创建一个SqlCommand对象,这个对象调用CommandText属性,执行操作SQL语句。

c) SQL语句执行的结果可以通过提供的方法返回:常用的方法有

i. ExecuteNonQuery方法返回的是执行影响的行数。

ii. ExecuteScalar()方法会返回结果的第一行第一列

iii. ExecuteReader()方法可以通过SqlDataReader类的对象进行读取返回的所有结果,读取结果使用Read方法,每调用一次,内部的指针就会向下移动一行。获取结果值的方法可以调用GetString或者是GetInt32方法,还可以通过GetOrdinal方法根据列的名称获取值,GetOrdinal方法是用来获取指定列的列序号,

 

3、获取自增自段的值,可以在插入语句中添加OUTPUT inserted.Id获取自增自段的值。

4、动态向数据库中添加数据有两种方法:

a) 使用字符连接方法,例如:cmd.CommandText = "select * from T_UserPassword where UserName='" + user + "'";

b) 使用占位符参数:例如:cmd.CommandText = "select * from T_UserPassword where UserName=@username";这还需要使用cmd.Parameters.Add(new SqlParameter("username", user));SQL语句添加数据转换的参数。第一个参数是占位符名字,第二个参数是传入的实际值的名字。

注意:这两种方法都可以添加数据,但是第一种方法存在一个缺点漏洞,对于密码一类的信息在进行匹配的时候会出现错误,这是不应该存在的,所以一般都是用第二种方法。

 

实例:代码可以使用】

using System;

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


namespace ConsoleApplication3
{


    class Program
    {
        static void Main(string[] args)
        {
          //  OpenDatabase();


            Console.WriteLine("请输入用户名:");
            string userName = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string passWord = Console.ReadLine();
            OpenDatabase(userName,passWord);
            
            Console.ReadKey();
        }


        //数据库的一些操作
        public static void OpenDatabase(string user,string password)
        {
            //连接数据库
            //新建一个数据库对象
            //SqlConnection类表示一个到SQL Server数据库的打开的连接
            //using 可以进行资源的释放
            using (SqlConnection con = new SqlConnection())
            {
                con.ConnectionString = "server=192.168.2.28; database=DB_Test; uid=sa; pwd=Clear123";
                con.Open();
                Console.WriteLine("OK");
                //向数据库插入数据
                //using (SqlCommand cmd = con.CreateCommand())
                //{
                //    cmd.CommandText = "insert into T_test(Name)values('a')";
                //    //返回SQL语句执行之后受影响的行数
                //    cmd.ExecuteNonQuery();
                //    Console.WriteLine("插入成功!");
                //}
                //查询
                using (SqlCommand cmd = con.CreateCommand())
                {
                    //cmd.CommandText = "select count(*) from T_UserPassword";
                    数据库受影响的结果
                    ExecuteScalar返回结果的第一行第一列,返回的是一个object类 
                    //Console.WriteLine(cmd.ExecuteScalar());


                    cmd.CommandText = "select * from T_UserPassword where UserName='" + user + "';";
                    //参数占位符的使用,用于连接sql语句
                   // cmd.CommandText = "select * from T_UserPassword where UserName=@username";
                    //第一个参数是占位符名字,第二个是传入的参数名字。
                  //  cmd.Parameters.Add(new SqlParameter("username", user));


                    using (SqlDataReader reader = cmd.ExecuteReader()) 
                    {
                        //if (reader.Read())
                        //{
                        //    string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
                        //    if (password == dbpassword)
                        //    {
                        //        Console.WriteLine("登陆成功!");
                        //    }
                        //    else
                        //    {
                        //        Console.WriteLine("登录失败!");
                        //    }
                        //}
                        //else
                        //{
                        //    Console.WriteLine("用户名不存在!");
                        //}
                        //只能往下读取,一行一行的读
                        while (reader.Read() != false)
                        {
                            //根据列获得值,string类型的,GetInt32()整型
                            Console.WriteLine(reader.GetString(1));
                            //reader.GetOrdinal("UserName")根据列的名字获得序列号
                            Console.WriteLine(reader.GetString(reader.GetOrdinal("UserName")));
                        }
                    }
                }
            //插入
                using (SqlCommand cmd = con.CreateCommand())
                {
                    //cmd.CommandText = "insert into T_UserPassword(UserName,Password)values('" + user + "','" + password + "')";
                    //cmd.ExecuteNonQuery();
                    //Console.WriteLine("插入成功!");




                    //获得自增字段的值
                    cmd.CommandText = "insert into T_UserPassword(UserName,Password) OUTPUT inserted.Id values('" + user + "','" + password + "')";
                    //cmd.ExecuteNonQuery();
                    int i = Convert.ToInt32(cmd.ExecuteScalar());
                    Console.WriteLine(i);
                    Console.WriteLine("插入成功!");




                    
                   // cmd.CommandText = "insert into T_UserPassword(UserName,Password) OUTPUT inserted.Id values('" + user + "','" + password + "')";
                }
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值