操作sqlserver数据库常用的三个方法
1、 ADO.NET
-> 连接字符串,常用的两种方式:
server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码;
server=计算机名或ip\实例名;database=数据库名;integrated security=true;
-> 常用的类库
SqlConnection 连接数据库用
SqlCommand 执行SQL语句
SqlDataReader 读取的对象(此种读取数据的方式有点像StreamReader)
SqlAdapter 将数据库中的数据放入DataSet
DataSet 内存级别的离线数据库(有点像FileStream.Read)
对比模型
(图片来自网络,若是原文作者看到,请提供链接地址,时间很久远了.......)
-> 连接数据库的步骤
-> 写连接字符串
-> 创建连接对象,使用连接字符串
-> Open,打开数据库
-> 关闭释放数据库,可以使用using
2、执行SQL语句
-> 使用SqlCommand对象
-> 步骤:
-> 首先创建SQL语句字符串(sql)与连接通道SqlConnection(conn)
1 string sql = "insert into tbl(id, name) values(1, '123');" 2 SqlConnection conn = new SqlConnection(@"server=计算机名或ip\实例名;database=数据库名;uid=sa;pwd=密码;");
-> 创建SqlCommand对象,将sql与conn交给它(通过构造函数或属性)
SqlCommand cmd = new SqlCommand(sql, conn);
-> 在Open的情况下,调用方法(SqlCommand对象的方法)
1 conn.Open(); 2 cmd.方法();
-> 常用的三个方法
1 ExecuteNonQuery() 专门执行非查询语句(增、删、改等),返回受影响行数 2 ExecuteScalar() 执行查询,返回的是结果中第一行第一列的数据(object) 3 ExecuteReader() 专门执行查询,可以获得多行多列的数据
3、 先创建一个表,插入数据
注意问题
-> sql语句如果在SSMS中执行没有问题在ADO.Net一般不会出现问题
-> 关于主键和自动增长
-> 连接字符串数据库的名字
-> 关于约束
异常处理
1 try 2 { 3 // 可能出现异常的代码 4 } 5 6 catch(Exception ex) 7 8 { 9 // 出现异常之后的代码 10 } 11 12 finally 13 { 14 // 用来关闭连接 15 }
4、 ExecuteScalar()
-> 读取数据,获取第一行与第一列
-> 执行中除了SQL语句和执行方法不同流程都一样
5、-> 将SQL语句中的参数拼接修改一下
-> 凡是要用到参数的地方,都将这个变数,写成一个变量
-> 使用的时候为这个变量赋值即可
-> 实现步骤
-> 写SQL语句的时候,用"@别名"代替挖坑的地方
1 select COUNT(*) from tblLogin where logUid='{0}' and logPwd='{1}';容易sql注入漏洞攻击 2 select COUNT(*) from tblLogin where logUid=@logUid and logPwd=@logPwd;
-> 在ADO.Net中执行SQL语句前(cmd.方法()调用前)
-> 创建一个对象,SqlParameter
1 SqlParameter p = new SqlParameter(参数的别名, 参数的值); 2 SqlParameter p1 = new SqlParameter("@logUid", txtUid.Text.Trim()); 3 SqlParameter p2 = new SqlParameter("@logPwd", txtPwd.Text);
-> 将参数加到cmd对象中
cmd.Parameters.Add(参数对象);
cmd.Parameters.Add(p1);
-
博客地址:http://www.cnblogs.com/wolf-sun/
博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义