Sql 常用的语句实例与代码
在学习SQL的时候,本来预计花三天的时候掌握MS SQL这些基础,现在争取提前一天看完。总结沉底下来,其实也没有多少东西:
1、程序初始化前,先连接数据库
MFC程序中添加记录的代码:
- /************************************************************************/
- /* 函数作用: 对话框默认初始化函数,连接SQL数据库、添加列表头
- /* 函数参数: 无
- /* 返 回 值: 成功返回TRUE,否则返回FALSE
- /* 说 明: By Koma 2009-08-20 20:18 Edit
- /************************************************************************/
- BOOL CQDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- // Add "About..." menu item to system menu.
- // IDM_ABOUTBOX must be in the system command range.
- ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
- ASSERT(IDM_ABOUTBOX < 0xF000);
- CMenu* pSysMenu = GetSystemMenu(FALSE);
- if (pSysMenu != NULL)
- {
- CString strAboutMenu;
- strAboutMenu.LoadString(IDS_ABOUTBOX);
- if (!strAboutMenu.IsEmpty())
- {
- pSysMenu->AppendMenu(MF_SEPARATOR);
- pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
- }
- }
- // Set the icon for this dialog. The framework does this automatically
- // when the application's main window is not a dialog
- SetIcon(m_hIcon, TRUE); // Set big icon
- SetIcon(m_hIcon, FALSE); // Set small icon
- // TODO: Add extra initialization here
- //初始化COM接口
- if (!AfxOleInit())
- {
- AfxMessageBox("初始化com接口失败");
- }
- HRESULT hr;
- try
- {
- // 创建Connection对象
- hr = m_pConnection.CreateInstance("ADODB.Connection");
- if(SUCCEEDED(hr))
- {
- // 连接数据库成功
- hr = m_pConnection->Open("Provider=SQLOLEDB;Server=koma.5166.info,1433;DataBase=student;UID=sa;PWD=","","",adModeUnknown);
- }
- }
- catch(_com_error e)
- {
- // 捕捉异常
- CString errormessage;
- errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
- AfxMessageBox(errormessage);///显示错误信息
- }
- // 上下列表控件初始化XP风格
- LONG lStyle = m_LineList.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
- lStyle |= LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
- m_LineList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle);
- // 添加ListBox列表头
- m_LineList.InsertColumn(0,"姓名", NULL,80, -1);
- m_LineList.InsertColumn(1,"班级", NULL,80,-1);
- m_LineList.InsertColumn(2,"语文", NULL,80,-1);
- m_LineList.InsertColumn(3,"数学", NULL,80, -1);
- m_LineList.InsertColumn(4,"英语", NULL,80, -1);
- return TRUE; // return TRUE unless you set the focus to a control
- }
2、选择表名
例句:use student 这条语句一般在SQL查询分析器中需要使用到,而在程序中我觉得并不需要。
3、读取记录
SQL查询分析器中例句:
use student
select * from db_info
MFC程序中添加记录的代码:
- /************************************************************************/
- /* 函数作用: 读取SQL数据库记录,将内容写入ListBox
- /* 函数参数: 无
- /* 返 回 值: 无
- /* 说 明: By Koma 2009-08-20 21:35 Edit
- /************************************************************************/
- void CQDlg::OnBtnRead()
- {
- // TODO: Add your control notification handler code here
- // 清空列表框
- m_LineList.DeleteAllItems();
- int nItem;
- _variant_t vName,vBanJi,vYuWen,vShuXue,vYinWen;
- try
- {
- // 连接数据库,打开MainInfo表
- m_pRecordset.CreateInstance("ADODB.Recordset");
- m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
- m_pConnection,TRUE),adOpenStatic,adLockOptimistic,adCmdText);
- // 判断记录集指针标志,是否读取完毕
- while(!m_pRecordset->adoEOF)
- {
- // 获取记录集
- vName = m_pRecordset->GetCollect("姓名");
- vBanJi = m_pRecordset->GetCollect("班级");
- vYuWen = m_pRecordset->GetCollect("语文");
- vShuXue = m_pRecordset->GetCollect("数学");
- vYinWen = m_pRecordset->GetCollect("英语");
- // 更新上面的ListBox
- nItem = m_LineList.InsertItem(0xffff,(_bstr_t)vName);
- m_LineList.SetItem(nItem,1,1,(_bstr_t)vBanJi,NULL,0,0,0);
- m_LineList.SetItem(nItem,2,1,(_bstr_t)vYuWen,NULL,0,0,0);
- m_LineList.SetItem(nItem,3,1,(_bstr_t)vShuXue,NULL,0,0,0);
- m_LineList.SetItem(nItem,4,1,(_bstr_t)vYinWen,NULL,0,0,0);
- // 移动记录集指针到下一条
- m_pRecordset->MoveNext();
- Sleep(5);
- }
- }
- catch (_com_error e)
- {
- // 读取出数据库记录出错
- CString strTemp;
- strTemp.Format("读取数据库时出错,错误代码:『%s』",GetLastError());
- AfxMessageBox(strTemp);
- }
- }
4、添加记录
SQL查询分析器中例句:
insert into db_info ([姓名],[班级],[语文],[数学],[英语]) values ('邓丽君','二年三班','98','94','100')
MFC程序中添加记录的代码:
- /************************************************************************/
- /* 函数作用: 读取SQL数据库,添加记录集
- /* 函数参数: 无
- /* 返 回 值: 无
- /* 说 明: By Koma 2009-08-20 22:45 Edit
- /************************************************************************/
- void CQDlg::OnBtnAdd()
- {
- // TODO: Add your control notification handler code here
- try
- {
- UpdateData(TRUE);
- CString sql;
- m_pRecordset.CreateInstance("ADODB.Recordset");
- m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
- m_pConnection,TRUE),adOpenStatic,adLockBatchOptimistic,adCmdText);
- sql.Format("insert into db_info ([姓名],[班级],[语文],[数学],[英语]) values ('%s','%s','%d','%d','%d')",
- m_Name,m_Class,m_Yuwen,m_Shuxue,m_English);
- // 执行SQL语句
- m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);
- MessageBox("添加成功!","提示");
- }
- catch(_com_error e)
- {
- // 添加出错
- CString errormessage;
- errormessage.Format("添加失败,请检查姓名『%s』是否已经存在!/n错误信息:『%s』",m_Name,e.ErrorMessage());
- AfxMessageBox(errormessage);
- }
- }
5、修改记录
SQL查询分析器中例句:
update db_info set [姓名]='黄家駒',[班级]='三年三班',[语文]='97',[数学]='96',[英语]='98' where [姓名]='黄家驹'
MFC程序中添加记录的代码:
- /************************************************************************/
- /* 函数作用: 读取SQL数据库,修改记录集
- /* 函数参数: 无
- /* 返 回 值: 无
- /* 说 明: By Koma 2009-08-20 22:58 Edit
- /************************************************************************/
- void CQDlg::OnBtnEdit()
- {
- // TODO: Add your control notification handler code here
- try
- {
- // 修改数据,以姓名为键
- UpdateData(TRUE);
- CString sql;
- m_pRecordset.CreateInstance("ADODB.Recordset");
- m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
- m_pConnection,TRUE),adOpenStatic,adLockBatchOptimistic,adCmdText);
- sql.Format("update db_info set [姓名]='%s',[班级]='%s',[语文]='%d',[数学]='%d',[英语]='%d' where [姓名]='%s'",
- m_Name,m_Class,m_Yuwen,m_Shuxue,m_English,m_OldName);
- // 执行SQL语句
- m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);
- // 刷新重新读取数据库
- OnBtnRead();
- MessageBox("修改成功!","提示");
- }
- catch(_com_error e)
- {
- // 修改失败
- CString errormessage;
- errormessage.Format("修改失败,错误信息:『%s』",e.ErrorMessage());
- AfxMessageBox(errormessage);
- }
- }
6、删除记录
SQL查询分析器中例句:
delete from db_info where [姓名]='黄家驹'
MFC程序中添加记录的代码:
- /************************************************************************/
- /* 函数作用: 读取SQL数据库,删除记录集
- /* 函数参数: 无
- /* 返 回 值: 无
- /* 说 明: By Koma 2009-08-20 21:46 Edit
- /************************************************************************/
- void CQDlg::OnBtnDel()
- {
- // TODO: Add your control notification handler code here
- try
- {
- UpdateData(TRUE);
- CString sql;
- m_pRecordset.CreateInstance("ADODB.Recordset");
- m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
- m_pConnection,TRUE),adOpenStatic,adLockBatchOptimistic,adCmdText);
- UpdateData(TRUE);
- sql.Format("delete from db_info where [姓名]='%s'",m_Name);
- // 执行SQL语句
- m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);
- OnBtnRead();
- MessageBox("删除成功!","提示");
- }
- catch(_com_error e)
- {
- CString errormessage;
- errormessage.Format("删除失败,错误信息:『%s』",e.ErrorMessage());
- AfxMessageBox(errormessage);
- }
- }
7、条件判断
SQL脚本中,常用的关键词有:
where、or、and、like、order by
SQL查询分析器中例句:
A、完全符合条件:select * from db_info where [姓名]='黄家强'
B、比较符合条件:select * from db_info where [语文]>='80'
C、按语文来排序:select * from db_info where [语文]>='80' order by [语文]
D、符合关键字的:select * from db_info where [姓名] like '%黄%'
E、组合条件查询:select * from db_info where [姓名] like '%黄%' and [语文]>=90
F、组合条件查询:select * from db_info where [姓名] like '%黄%' or [语文]>=90
MFC程序中添加记录的代码,上面的代码中除了带有%关键字比较麻烦,其他的应该没问题,这里举例以字段包含某关键字:
- /************************************************************************/
- /* 函数作用: 查询姓名字段包含某关键字的记录集
- /* 函数参数: 默认
- /* 返 回 值: 无
- /* 说 明: By Koma 2009-08-20 23:10 Edit
- /************************************************************************/
- void CQDlg::OnBtnFind()
- {
- // TODO: Add your control notification handler code here
- try
- {
- // 清空列表框
- UpdateData(TRUE);
- m_LineList.DeleteAllItems();
- CString sql;
- int nItem;
- _variant_t vName,vBanJi,vYuWen,vShuXue,vYinWen;
- sql.Format("select * from db_info where [姓名] like /'%%%s%%/'",m_FindName);
- m_pRecordset.CreateInstance("ADODB.Recordset");
- m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)
- m_pConnection,TRUE),adOpenStatic,adLockOptimistic,adCmdText);
- // 判断记录集指针标志,是否读取完毕
- while(!m_pRecordset->adoEOF)
- {
- // 获取记录集
- vName = m_pRecordset->GetCollect("姓名");
- vBanJi = m_pRecordset->GetCollect("班级");
- vYuWen = m_pRecordset->GetCollect("语文");
- vShuXue = m_pRecordset->GetCollect("数学");
- vYinWen = m_pRecordset->GetCollect("英语");
- // 更新上面的ListBox
- nItem = m_LineList.InsertItem(0xffff,(_bstr_t)vName);
- m_LineList.SetItem(nItem,1,1,(_bstr_t)vBanJi,NULL,0,0,0);
- m_LineList.SetItem(nItem,2,1,(_bstr_t)vYuWen,NULL,0,0,0);
- m_LineList.SetItem(nItem,3,1,(_bstr_t)vShuXue,NULL,0,0,0);
- m_LineList.SetItem(nItem,4,1,(_bstr_t)vYinWen,NULL,0,0,0);
- // 移动记录集指针到下一条
- m_pRecordset->MoveNext();
- Sleep(5);
- }
- CString strTotal;
- int nTotals=m_pRecordset->GetRecordCount();
- strTotal.Format("查询完成,总共有%d条记录!",nTotals);
- SetDlgItemText(IDC_STATIC_RESULT,strTotal);
- }
- catch (_com_error e)
- {
- // 读取出数据库记录出错
- CString strTemp;
- strTemp.Format("读取数据库时出错,错误代码:『%s』",GetLastError());
- AfxMessageBox(strTemp);
- }
- }
8、总结
个人觉得,在程序设计中上面的实例与代码应付一般的数据库操作都没什么问题,如果具体还需要更高级的操作的话,直接去查查联机手机吧,“中文”稍微好点的,应该没什么问题!
Sql 常用的语句实例与代码的更多相关文章
- SQL 常用基础语句
1.SQL SELECT 语句 语法:SELECT 列名称 FROM 表名称 2.SQL SELECT DISTINCT 语句 语法:SELECT DISTINCT 列名 ...
- Ubuntu 16.04安装、卸载mysql及怎么使用SQL常用操作语句
以前都是在window上操作,连接数据库,最近转Ubuntu系统,故此,记下安装过程 一,安装mysql,Ctrl+Alt+T打开终端,一步步分别输入命令 //安装mysql服务 sudo apt-g ...
- 【转】SQL常用的语句和函数
原文链接:http://www.cnblogs.com/mailingfeng/archive/2013/01/07/2850116.html order by 的数值型灵活使用 select * f ...
- SQL常用的语句和函数
order by 的数值型灵活使用 select * from table_a where order by decode(函数,'asc',1,'desc',-1)*jsny; 控制试图的访问时间: ...
- SQL 常用判断语句
我们在做sql更新时,为防止sql重复执行报错,需要对所需要执行的对象进行判断是否存在: 常用判断脚本如下: 判断视图是否存在 IF object_id('viewname') IS not NULL ...
- SQL常用查询语句及函数
1.日期匹配_获取时间差 select datediff(dd,getdate(),'12/25/2006') --计算从今天到12/25/2006还有多少个月 2.不能通过IP连接数据库 在数据库 ...
- SQL常用系统信息语句
一.查询指定表外键约束 SELECT A.name AS 约束名 , OBJECT_NAME(B.parent_object_id) AS 外键表 , D.name AS ...
- MSSQL sql常用判断语句
.判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名') drop database [数据库名] 2 判断 ...
- sql 常用的语句(sql 创建表结构 修改列 清空表)
1.创建表 create Table WorkItemHyperlink ( ID bigint primary key ,--主键 WorkItemID ,) not null,--其中identi ...
随机推荐
- 为11gR2 Grid Infrastructure增加新的public网络
在某些环境下,运行11.2版本的RAC数据库的服务器上,连接了多个public网络,那么就会有如下的需求: 给其他的,或者说是新的public网络增加新的VIP地址. 在新的public网络上增加SC ...
- Ant:Ant 入门
背景 自从有了 Maven 以后,Ant 视乎就不流行了,不过 Ant 还是有其应用场景的,Ant 的思想比较简洁,如下: 一个 project 包含多个 target(类似成员方法). 一个 tar ...
- llvm中如何利用分支概率和基本块频率估计
1. 背景 llvm自2.9版以后,已经集成了对分支概率和基本块频率的静态分析. 分支概率(branch probability)是指在程序的控制流图中,从控制流从一个基本块A到其任意后继基本块Si的 ...
- session劫持技术
目录: 0×00 应用程序认证设计背景0×01 常规攻击思路及缺陷0×02 利用应用程序设计缺陷进行Session劫持的攻击原理0×03 Session劫持的大致思路及意义0×04 如何防御这种攻击 ...
- http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html
http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html http://www.linuxeden.com/html/softuse ...
- [React] Preventing extra re-rendering with function component by using React.memo and useCallback
Got the idea form this lesson. Not sure whether it is the ncessary, no othere better way to handle i ...
- (C++)函数参数传递中的一级指针和二级指针
主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址: 二级指针: ...
- (剑指Offer)面试题7:用两个栈实现队列
题目: 用两个栈实现一个队列. 队列的声明如下:请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 思路: 根据栈的“先进后出”特点, ...
- SQL语句中拆分字段
SELECT PARSENAME(replace(MONITOR_ROOM_ID,'^' , '.'), 1) AS RoomID FROM ZY_MONITOR_ROOM 遇到以前系统高人设计的表, ...
- 使用ionic播放轮询广告的方法
使用ionic中的ion-slide-box实现,下面是完整的代码示例: <!DOCTYPE html> <html ng-app="app"> <h ...