lysanderK 2020-03-04
1、Ado.net
Ado.net是一组由微软提供的使用C#操作数据库的类库


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();
}
}
}自动释放连接的语法糖

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

进程池是一个对象池,当我们第一次连接数据库时直接向数据库
请求连接,同时在连接池内生成一个innerConnection对象,当我们通过close释放
连接后,池内的对象不会释放,直接从连接池内取出来,节省我们需要频繁使用数据库的开销。
当连接池内的对象有空闲的,直接使用空闲的;当没有空闲的内连接对象时,未达到连接池上限时,直接向数据库创立一个,
达到上限时需要等待

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
之后使用上述类的静态方法即可
------------恢复内容结束------------
<add key="RedisPath" value="127.0.0.1:6379"/> todo:这里配置自己redis的ip地址和端口号。//ReadServerList:可读的Redis链接地