sql05

lysanderK 2020-03-04

1、Ado.net

Ado.net是一组由微软提供的使用C#操作数据库的类库

sql05

sql05

2、连接

首先引入:

using System.Data.SqlClient;

需要使用连接字符串进行连接

using System;
using System.Data.SqlClient;
using System.Text;

namespace Demo
{

    class Program
    {

        static void Main()
        {
            // 连接字符串
            string connStr = "server=127.0.0.1;uid=sa;pwd=123456;database=Demo";
            SqlConnection conn = new SqlConnection(connStr);

            // 连接数据库
            conn.Open();
            Console.WriteLine("连接完成");

            // 关闭连接
            conn.Close();
            conn.Dispose();
            Console.WriteLine("数据库关闭");
            Console.ReadLine();
        }


    }

}

上面所示的是最简单的连接字符串,包括服务地址,账号及密码,数据库名称

使用#region可以划分代码块

3、执行语句

using System;
using System.Data.SqlClient;
using System.Text;

namespace Demo
{

    class Program
    {

        static void Main()
        {
            // 连接字符串
            string connStr = "server=127.0.0.1;uid=sa;pwd=123456;database=Demo";
            SqlConnection conn = new SqlConnection(connStr);

            conn.Open();
            Console.WriteLine("连接完成");

            // 创建sql命令对象
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            // 书写SQL脚本
            cmd.CommandText = "insert into [dbo].[user](name,age,ClassId) values(N‘徐若瑄‘,66,103)";
            // 非查询语句执行,返回受影响的行数
            cmd.ExecuteNonQuery();
            Console.WriteLine("语句执行完成");       conn.Close();
            Console.ReadLine();
        }


    }

}

自动释放连接的语法糖

sql05

3、连接池

在连接字符串中有一个属性叫pooling,默认为true,意为启用连接池

sql05

进程池是一个对象池,当我们第一次连接数据库时直接向数据库

请求连接,同时在连接池内生成一个innerConnection对象,当我们通过close释放

连接后,池内的对象不会释放,直接从连接池内取出来,节省我们需要频繁使用数据库的开销。

当连接池内的对象有空闲的,直接使用空闲的;当没有空闲的内连接对象时,未达到连接池上限时,直接向数据库创立一个,

达到上限时需要等待

sql05

4、制作一个连接字符串创建器

 5、制作一个登陆窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace UserLogin
{
    public partial class UserLoginFrm : Form
    {
        public UserLoginFrm()
        {
            InitializeComponent();
        }


        private void UserLoginFrm_Load(object sender, EventArgs e)
        {

        }

        private void LoginBtn_Click(object sender, EventArgs e)
        {
            //取走窗体数据进行校验
            if (string.IsNullOrEmpty(UsernameBox.Text.Trim())|| 
                string.IsNullOrEmpty(PwdBox.Text.Trim()))
            {
                MessageBox.Show("用户名或密码不可为空");
                return;
            }


            //连接数据库进行查询
            string connStr = "server=127.0.0.1;uid=sa;pwd=123456;database=Demo";
            using (SqlConnection conn=new SqlConnection(connStr))
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    conn.Open();

                    string sql = string.Format("select count(1) from LoginUser where Username=‘{0}‘ and Password=‘{1}‘", 
                        UsernameBox.Text, PwdBox.Text);
                    cmd.CommandText = sql;
                    // 执行查询语句,并只返回查询出来的第一个单元格的值,返回的数据格式也不清楚
                    object result = cmd.ExecuteScalar();
                    int rows = int.Parse(result.ToString());
                    if (rows >= 1)
                    {
                        MessageBox.Show("成功登录!");
                    }
                    else
                    {
                        MessageBox.Show("登录失败!");
                    }
                }
            }
        }
    }
}

6、配置文件配置连接字符串

 在App.config中进行配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="sql" connectionString="server=127.0.0.1;uid=sa;pwd=123456;database=Demo"/>
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

在专门的一个类中进行引入:

using System.Configuration;

namespace UserLogin
{
    class ConnectionStringHelper
    {
        public static string GetCurrentConnectionString()
        {
            return ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
        }
    }
}

在引用中引入:System.Configuration

之后使用上述类的静态方法即可

------------恢复内容结束------------

相关推荐