"这Excel表格越做越大,每次查找数据都要等半天..."程序员小张盯着电脑屏幕发愁,作为刚入职的行政助理,他每天要处理上千条客户数据,简单的表格已经无法满足需求,直到某天午休时,他看到隔壁技术部的老王正在用易语言快速调取客户信息,不到3秒就完成了原本需要半小时的手工筛选。
"老王,你这是用的什么神器啊?"小张好奇地凑过去。"这是易语言配合MSSQL数据库啊,想学吗?"老王笑着说,就这样,小张踏上了学习易语言操作MSSQL的旅程...
首先你得有个MSSQL数据库环境,推荐使用SQL Server 2019 Express版,这是微软提供的免费版本,足够学习使用,安装过程就像装普通软件一样简单:
安装完成后,可以顺便安装SQL Server Management Studio(SSMS),这是官方提供的图形化管理工具,初学者用起来会很顺手。
确保你已经安装了易语言开发环境(5.9版本以上最佳),易语言本身不自带MSSQL支持,我们需要通过外部组件来实现:
连接MSSQL就像打电话,需要知道对方的"号码"(服务器地址)和"密码"(认证信息),在易语言中,我们使用这样的连接字符串:
"Driver={SQL Server};Server=你的服务器名或IP;Database=数据库名;Uid=用户名;Pwd=密码;"
如果是连接本地的SQL Server Express,通常可以这样写:
"Driver={SQL Server};Server=.\SQLEXPRESS;Database=TestDB;Uid=sa;Pwd=123456;"
在易语言中建立连接的完整示例:
.版本 2 .程序集 数据库测试 .程序集变量 数据库连接 为 数据库连接类 .子程序 _启动子程序, 整数型 .局部变量 连接结果, 逻辑型 数据库连接.创建 () 连接结果 = 数据库连接.连接SQLServer (".\\SQLEXPRESS", "TestDB", "sa", "123456") (连接结果) 则 信息框 ("数据库连接成功!", 0, ) 否则 信息框 ("连接失败:" + 数据库连接.取错误文本 (), 0, ) 返回 0
CRUD是指Create(创建)、Read(读取)、Update(更新)和Delete(删除),这是数据库最基本的四种操作。
在操作数据前,我们需要先创建表结构,假设我们要创建一个学生信息表:
.子程序 创建学生表 .局部变量 SQL语句, 文本型 SQL语句 = "CREATE TABLE Students (" SQL语句 = SQL语句 + "ID INT PRIMARY KEY IDENTITY(1,1)," SQL语句 = SQL语句 + "Name NVARCHAR(50) NOT NULL," SQL语句 = SQL语句 + "Age INT," SQL语句 = SQL语句 + "Gender CHAR(1)," SQL语句 = SQL语句 + "Score DECIMAL(5,2)" SQL语句 = SQL语句 + ")" (数据库连接.执行SQL (SQL语句)) 则 信息框 ("学生表创建成功!", 0, ) 否则 信息框 ("创建失败:" + 数据库连接.取错误文本 (), 0, )
添加几个学生记录:
.子程序 添加学生 .局部变量 SQL语句, 文本型 SQL语句 = "INSERT INTO Students (Name, Age, Gender, Score) VALUES ('张三', 20, '男', 85.5)" 数据库连接.执行SQL (SQL语句) SQL语句 = "INSERT INTO Students (Name, Age, Gender, Score) VALUES ('李四', 21, '女', 92.0)" 数据库连接.执行SQL (SQL语句)
查询所有学生信息并显示:
.子程序 查询所有学生 .局部变量 记录集, 记录集类 .局部变量 结果文本, 文本型 记录集.创建 () (记录集.打开 ("SELECT * FROM Students", 数据库连接)) 则 判断循环首 (记录集.尾记录后 = 假) 结果文本 = 结果文本 + "ID:" + 到文本 (记录集.读字段整数值 ("ID")) + " " 结果文本 = 结果文本 + "姓名:" + 记录集.读字段文本值 ("Name") + " " 结果文本 = 结果文本 + "年龄:" + 到文本 (记录集.读字段整数值 ("Age")) + " " 结果文本 = 结果文本 + "性别:" + 记录集.读字段文本值 ("Gender") + " " 结果文本 = 结果文本 + "分数:" + 到文本 (记录集.读字段小数值 ("Score")) + #换行符 记录集.到下一条 () 判断循环尾 () 信息框 (结果文本, 0, "学生列表") 否则 信息框 ("查询失败:" + 记录集.取错误文本 (), 0, )
更新张三的分数:
.子程序 更新分数 数据库连接.执行SQL ("UPDATE Students SET Score = 88.0 WHERE Name = '张三'")
删除李四的记录:
.子程序 删除记录 数据库连接.执行SQL ("DELETE FROM Students WHERE Name = '李四'")
直接拼接SQL语句有安全风险,应该使用参数化查询:
.子程序 安全添加学生 .局部变量 参数表, 参数表类 .局部变量 SQL语句, 文本型 参数表.创建 () 参数表.添加参数 ("@name", "王五", #文本型) 参数表.添加参数 ("@age", 22, #整数型) 参数表.添加参数 ("@gender", "男", #文本型) 参数表.添加参数 ("@score", 78.5, #小数型) SQL语句 = "INSERT INTO Students (Name, Age, Gender, Score) VALUES (@name, @age, @gender, @score)" 数据库连接.执行参数化SQL (SQL语句, 参数表)
当需要执行多个相关操作时,使用事务可以保证数据一致性:
.子程序 转账操作 .局部变量 事务, 事务类 事务.创建 (数据库连接) (事务.开始事务 ()) 则 (数据库连接.执行SQL ("UPDATE Accounts SET Balance = Balance - 100 WHERE AccountID = 'A001'")) 则 (数据库连接.执行SQL ("UPDATE Accounts SET Balance = Balance + 100 WHERE AccountID = 'A002'")) 则 事务.提交事务 () 信息框 ("转账成功!", 0, ) 否则 事务.回滚事务 () 信息框 ("转入失败,已回滚", 0, ) 结束 否则 事务.回滚事务 () 信息框 ("转出失败,已回滚", 0, ) 结束 否则 信息框 ("事务启动失败", 0, ) 结束
MSSQL的存储过程可以大大提高效率,易语言中调用示例:
.子程序 调用存储过程 .局部变量 参数表, 参数表类 .局部变量 返回值, 整数型 参数表.创建 () 参数表.添加参数 ("@studentName", "张三", #文本型) 参数表.添加参数 ("@avgScore", 0, #小数型, #输出参数) 返回值 = 数据库连接.执行存储过程 ("sp_GetStudentAvgScore", 参数表) (返回值 = 1) 则 信息框 ("张三的平均分是:" + 到文本 (参数表.取参数值 ("@avgScore")), 0, ) 否则 信息框 ("查询失败", 0, )
让我们把学到的知识综合起来,做一个简单的学生成绩管理系统:
.版本 2 .程序集 学生管理系统 .程序集变量 数据库连接 为 数据库连接类 .子程序 _启动子程序, 整数型 .局部变量 选择, 整数型 ' 初始化数据库连接 (数据库连接.连接SQLServer (".\\SQLEXPRESS", "SchoolDB", "sa", "123456") = 假) 则 信息框 ("数据库连接失败!", 0, ) 返回 0 结束 ' 主菜单循环 判断循环首 (真) 选择 = 选择框 ("请选择操作:", "1.添加学生", "2.查询学生", "3.修改成绩", "4.删除学生", "5.退出") 判断 (选择) 情况 1: 添加学生 () 情况 2: 查询学生 () 情况 3: 修改成绩 () 情况 4: 删除学生 () 情况 5: 跳出循环 () 判断结束 判断循环尾 () 数据库连接.关闭 () 返回 0 ' 下面是各个功能的实现子程序 .子程序 添加学生 ' 实现代码... .子程序 查询学生 ' 实现代码... .子程序 修改成绩 ' 实现代码... .子程序 删除学生 ' 实现代码...
记得小张吗?经过一个月的学习实践,他现在已经能熟练使用易语言操作MSSQL数据库了,不仅工作效率提升了,还因为这项技能被调到了信息部担任助理开发工程师。
学习数据库操作就像学骑自行车,开始可能会摔几次,但一旦掌握就能自由驰骋,现在轮到你踏上这段旅程了!
祝你在易语言和MSSQL的学习之路上越走越远,早日成为数据处理高手!
本文由 左嘉勋 于2025-08-02发表在【云服务器提供商】,文中图片由(左嘉勋)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/519305.html
发表评论