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链接地