在学习SQL的时候,本来预计花三天的时候掌握MS SQL这些基础,现在争取提前一天看完。总结沉底下来,其实也没有多少东西:

1、程序初始化前,先连接数据库

MFC程序中添加记录的代码:

  1. /************************************************************************/
  2. /* 函数作用: 对话框默认初始化函数,连接SQL数据库、添加列表头
  3. /* 函数参数: 无
  4. /* 返 回 值: 成功返回TRUE,否则返回FALSE
  5. /* 说    明: By Koma 2009-08-20 20:18 Edit
  6. /************************************************************************/
  7. BOOL CQDlg::OnInitDialog()
  8. {
  9. CDialog::OnInitDialog();
  10. // Add "About..." menu item to system menu.
  11. // IDM_ABOUTBOX must be in the system command range.
  12. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  13. ASSERT(IDM_ABOUTBOX < 0xF000);
  14. CMenu* pSysMenu = GetSystemMenu(FALSE);
  15. if (pSysMenu != NULL)
  16. {
  17. CString strAboutMenu;
  18. strAboutMenu.LoadString(IDS_ABOUTBOX);
  19. if (!strAboutMenu.IsEmpty())
  20. {
  21. pSysMenu->AppendMenu(MF_SEPARATOR);
  22. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  23. }
  24. }
  25. // Set the icon for this dialog.  The framework does this automatically
  26. //  when the application's main window is not a dialog
  27. SetIcon(m_hIcon, TRUE);         // Set big icon
  28. SetIcon(m_hIcon, FALSE);        // Set small icon
  29. // TODO: Add extra initialization here
  30. //初始化COM接口
  31. if (!AfxOleInit())
  32. {
  33. AfxMessageBox("初始化com接口失败");
  34. }
  35. HRESULT hr;
  36. try
  37. {
  38. // 创建Connection对象
  39. hr = m_pConnection.CreateInstance("ADODB.Connection");
  40. if(SUCCEEDED(hr))
  41. {
  42. // 连接数据库成功
  43. hr = m_pConnection->Open("Provider=SQLOLEDB;Server=koma.5166.info,1433;DataBase=student;UID=sa;PWD=","","",adModeUnknown);
  44. }
  45. }
  46. catch(_com_error e)
  47. {
  48. // 捕捉异常
  49. CString errormessage;
  50. errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
  51. AfxMessageBox(errormessage);///显示错误信息
  52. }
  53. // 上下列表控件初始化XP风格
  54. LONG lStyle = m_LineList.SendMessage(LVM_GETEXTENDEDLISTVIEWSTYLE);
  55. lStyle |=  LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES;
  56. m_LineList.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,(LPARAM)lStyle);
  57. //  添加ListBox列表头
  58. m_LineList.InsertColumn(0,"姓名", NULL,80, -1);
  59. m_LineList.InsertColumn(1,"班级", NULL,80,-1);
  60. m_LineList.InsertColumn(2,"语文", NULL,80,-1);
  61. m_LineList.InsertColumn(3,"数学", NULL,80, -1);
  62. m_LineList.InsertColumn(4,"英语", NULL,80, -1);
  63. return TRUE;  // return TRUE  unless you set the focus to a control
  64. }

2、选择表名

例句:use student  这条语句一般在SQL查询分析器中需要使用到,而在程序中我觉得并不需要。

3、读取记录

SQL查询分析器中例句:

use student

select * from db_info

MFC程序中添加记录的代码:

  1. /************************************************************************/
  2. /* 函数作用: 读取SQL数据库记录,将内容写入ListBox
  3. /* 函数参数: 无
  4. /* 返 回 值: 无
  5. /* 说    明: By Koma 2009-08-20 21:35 Edit
  6. /************************************************************************/
  7. void CQDlg::OnBtnRead()
  8. {
  9. // TODO: Add your control notification handler code here
  10. //  清空列表框
  11. m_LineList.DeleteAllItems();
  12. int nItem;
  13. _variant_t vName,vBanJi,vYuWen,vShuXue,vYinWen;
  14. try
  15. {
  16. // 连接数据库,打开MainInfo表
  17. m_pRecordset.CreateInstance("ADODB.Recordset");
  18. m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
  19. m_pConnection,TRUE),adOpenStatic,adLockOptimistic,adCmdText);
  20. // 判断记录集指针标志,是否读取完毕
  21. while(!m_pRecordset->adoEOF)
  22. {
  23. // 获取记录集
  24. vName   = m_pRecordset->GetCollect("姓名");
  25. vBanJi  = m_pRecordset->GetCollect("班级");
  26. vYuWen  = m_pRecordset->GetCollect("语文");
  27. vShuXue = m_pRecordset->GetCollect("数学");
  28. vYinWen = m_pRecordset->GetCollect("英语");
  29. // 更新上面的ListBox
  30. nItem = m_LineList.InsertItem(0xffff,(_bstr_t)vName);
  31. m_LineList.SetItem(nItem,1,1,(_bstr_t)vBanJi,NULL,0,0,0);
  32. m_LineList.SetItem(nItem,2,1,(_bstr_t)vYuWen,NULL,0,0,0);
  33. m_LineList.SetItem(nItem,3,1,(_bstr_t)vShuXue,NULL,0,0,0);
  34. m_LineList.SetItem(nItem,4,1,(_bstr_t)vYinWen,NULL,0,0,0);
  35. // 移动记录集指针到下一条
  36. m_pRecordset->MoveNext();
  37. Sleep(5);
  38. }
  39. }
  40. catch (_com_error e)
  41. {
  42. // 读取出数据库记录出错
  43. CString strTemp;
  44. strTemp.Format("读取数据库时出错,错误代码:『%s』",GetLastError());
  45. AfxMessageBox(strTemp);
  46. }
  47. }

4、添加记录

SQL查询分析器中例句:

insert into db_info ([姓名],[班级],[语文],[数学],[英语]) values ('邓丽君','二年三班','98','94','100')

MFC程序中添加记录的代码:

  1. /************************************************************************/
  2. /* 函数作用: 读取SQL数据库,添加记录集
  3. /* 函数参数: 无
  4. /* 返 回 值: 无
  5. /* 说    明: By Koma 2009-08-20 22:45 Edit
  6. /************************************************************************/
  7. void CQDlg::OnBtnAdd()
  8. {
  9. // TODO: Add your control notification handler code here
  10. try
  11. {
  12. UpdateData(TRUE);
  13. CString sql;
  14. m_pRecordset.CreateInstance("ADODB.Recordset");
  15. m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
  16. m_pConnection,TRUE),adOpenStatic,adLockBatchOptimistic,adCmdText);
  17. sql.Format("insert into db_info ([姓名],[班级],[语文],[数学],[英语]) values ('%s','%s','%d','%d','%d')",
  18. m_Name,m_Class,m_Yuwen,m_Shuxue,m_English);
  19. // 执行SQL语句
  20. m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);
  21. MessageBox("添加成功!","提示");
  22. }
  23. catch(_com_error e)
  24. {
  25. // 添加出错
  26. CString errormessage;
  27. errormessage.Format("添加失败,请检查姓名『%s』是否已经存在!/n错误信息:『%s』",m_Name,e.ErrorMessage());
  28. AfxMessageBox(errormessage);
  29. }
  30. }

5、修改记录

SQL查询分析器中例句:

update db_info set [姓名]='黄家駒',[班级]='三年三班',[语文]='97',[数学]='96',[英语]='98' where [姓名]='黄家驹'

MFC程序中添加记录的代码:

  1. /************************************************************************/
  2. /* 函数作用: 读取SQL数据库,修改记录集
  3. /* 函数参数: 无
  4. /* 返 回 值: 无
  5. /* 说    明: By Koma 2009-08-20 22:58 Edit
  6. /************************************************************************/
  7. void CQDlg::OnBtnEdit()
  8. {
  9. // TODO: Add your control notification handler code here
  10. try
  11. {
  12. // 修改数据,以姓名为键
  13. UpdateData(TRUE);
  14. CString sql;
  15. m_pRecordset.CreateInstance("ADODB.Recordset");
  16. m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
  17. m_pConnection,TRUE),adOpenStatic,adLockBatchOptimistic,adCmdText);
  18. sql.Format("update db_info set [姓名]='%s',[班级]='%s',[语文]='%d',[数学]='%d',[英语]='%d' where [姓名]='%s'",
  19. m_Name,m_Class,m_Yuwen,m_Shuxue,m_English,m_OldName);
  20. // 执行SQL语句
  21. m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);
  22. // 刷新重新读取数据库
  23. OnBtnRead();
  24. MessageBox("修改成功!","提示");
  25. }
  26. catch(_com_error e)
  27. {
  28. // 修改失败
  29. CString errormessage;
  30. errormessage.Format("修改失败,错误信息:『%s』",e.ErrorMessage());
  31. AfxMessageBox(errormessage);
  32. }
  33. }

6、删除记录

SQL查询分析器中例句:

delete from db_info where [姓名]='黄家驹'

MFC程序中添加记录的代码:

  1. /************************************************************************/
  2. /* 函数作用: 读取SQL数据库,删除记录集
  3. /* 函数参数: 无
  4. /* 返 回 值: 无
  5. /* 说    明: By Koma 2009-08-20 21:46 Edit
  6. /************************************************************************/
  7. void CQDlg::OnBtnDel()
  8. {
  9. // TODO: Add your control notification handler code here
  10. try
  11. {
  12. UpdateData(TRUE);
  13. CString sql;
  14. m_pRecordset.CreateInstance("ADODB.Recordset");
  15. m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)
  16. m_pConnection,TRUE),adOpenStatic,adLockBatchOptimistic,adCmdText);
  17. UpdateData(TRUE);
  18. sql.Format("delete from db_info where [姓名]='%s'",m_Name);
  19. // 执行SQL语句
  20. m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);
  21. OnBtnRead();
  22. MessageBox("删除成功!","提示");
  23. }
  24. catch(_com_error e)
  25. {
  26. CString errormessage;
  27. errormessage.Format("删除失败,错误信息:『%s』",e.ErrorMessage());
  28. AfxMessageBox(errormessage);
  29. }
  30. }

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程序中添加记录的代码,上面的代码中除了带有%关键字比较麻烦,其他的应该没问题,这里举例以字段包含某关键字:

  1. /************************************************************************/
  2. /* 函数作用: 查询姓名字段包含某关键字的记录集
  3. /* 函数参数: 默认
  4. /* 返 回 值: 无
  5. /* 说    明: By Koma 2009-08-20 23:10 Edit
  6. /************************************************************************/
  7. void CQDlg::OnBtnFind()
  8. {
  9. // TODO: Add your control notification handler code here
  10. try
  11. {
  12. //  清空列表框
  13. UpdateData(TRUE);
  14. m_LineList.DeleteAllItems();
  15. CString sql;
  16. int     nItem;
  17. _variant_t vName,vBanJi,vYuWen,vShuXue,vYinWen;
  18. sql.Format("select * from db_info where [姓名] like /'%%%s%%/'",m_FindName);
  19. m_pRecordset.CreateInstance("ADODB.Recordset");
  20. m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)
  21. m_pConnection,TRUE),adOpenStatic,adLockOptimistic,adCmdText);
  22. // 判断记录集指针标志,是否读取完毕
  23. while(!m_pRecordset->adoEOF)
  24. {
  25. // 获取记录集
  26. vName   = m_pRecordset->GetCollect("姓名");
  27. vBanJi  = m_pRecordset->GetCollect("班级");
  28. vYuWen  = m_pRecordset->GetCollect("语文");
  29. vShuXue = m_pRecordset->GetCollect("数学");
  30. vYinWen = m_pRecordset->GetCollect("英语");
  31. // 更新上面的ListBox
  32. nItem = m_LineList.InsertItem(0xffff,(_bstr_t)vName);
  33. m_LineList.SetItem(nItem,1,1,(_bstr_t)vBanJi,NULL,0,0,0);
  34. m_LineList.SetItem(nItem,2,1,(_bstr_t)vYuWen,NULL,0,0,0);
  35. m_LineList.SetItem(nItem,3,1,(_bstr_t)vShuXue,NULL,0,0,0);
  36. m_LineList.SetItem(nItem,4,1,(_bstr_t)vYinWen,NULL,0,0,0);
  37. // 移动记录集指针到下一条
  38. m_pRecordset->MoveNext();
  39. Sleep(5);
  40. }
  41. CString strTotal;
  42. int nTotals=m_pRecordset->GetRecordCount();
  43. strTotal.Format("查询完成,总共有%d条记录!",nTotals);
  44. SetDlgItemText(IDC_STATIC_RESULT,strTotal);
  45. }
  46. catch (_com_error e)
  47. {
  48. // 读取出数据库记录出错
  49. CString strTemp;
  50. strTemp.Format("读取数据库时出错,错误代码:『%s』",GetLastError());
  51. AfxMessageBox(strTemp);
  52. }
  53. }

8、总结

个人觉得,在程序设计中上面的实例与代码应付一般的数据库操作都没什么问题,如果具体还需要更高级的操作的话,直接去查查联机手机吧,“中文”稍微好点的,应该没什么问题!

Sql 常用的语句实例与代码的更多相关文章

  1. SQL 常用基础语句

    1.SQL SELECT 语句 语法:SELECT    列名称    FROM    表名称 2.SQL SELECT DISTINCT 语句 语法:SELECT    DISTINCT    列名 ...

  2. Ubuntu 16.04安装、卸载mysql及怎么使用SQL常用操作语句

    以前都是在window上操作,连接数据库,最近转Ubuntu系统,故此,记下安装过程 一,安装mysql,Ctrl+Alt+T打开终端,一步步分别输入命令 //安装mysql服务 sudo apt-g ...

  3. 【转】SQL常用的语句和函数

    原文链接:http://www.cnblogs.com/mailingfeng/archive/2013/01/07/2850116.html order by 的数值型灵活使用 select * f ...

  4. SQL常用的语句和函数

    order by 的数值型灵活使用 select * from table_a where order by decode(函数,'asc',1,'desc',-1)*jsny; 控制试图的访问时间: ...

  5. SQL 常用判断语句

    我们在做sql更新时,为防止sql重复执行报错,需要对所需要执行的对象进行判断是否存在: 常用判断脚本如下: 判断视图是否存在 IF object_id('viewname') IS not NULL ...

  6. SQL常用查询语句及函数

    1.日期匹配_获取时间差 select datediff(dd,getdate(),'12/25/2006')  --计算从今天到12/25/2006还有多少个月 2.不能通过IP连接数据库 在数据库 ...

  7. SQL常用系统信息语句

    一.查询指定表外键约束 SELECT  A.name AS 约束名 ,        OBJECT_NAME(B.parent_object_id) AS 外键表 ,        D.name AS ...

  8. MSSQL sql常用判断语句

    .判断数据库是否存在 if exists (select * from sys.databases where name = '数据库名')    drop database [数据库名]  2 判断 ...

  9. sql 常用的语句(sql 创建表结构 修改列 清空表)

    1.创建表 create Table WorkItemHyperlink ( ID bigint primary key ,--主键 WorkItemID ,) not null,--其中identi ...

随机推荐

  1. linkhashmap实现原理

    HashMap和双向链表合二为一即是LinkedHashMap.所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap. ...

  2. Unity3d面试6

    1,如何避免点击UI按钮时穿透,同时触发了相同位置场景模型的点击事件的情况?(NGUI)1,如何避免点击UI按钮时穿透,同时触发了相同位置场景模型的点击事件的情况?(NGUI 判断 是否点击到UI) ...

  3. windows如何查看删除记录

    方法 打开组策略中的计算机配置-Windows设置-安全设置-本地策略-审核策略的审核对对像防问, 双击出现的对话框中钩选成功和失败,经过上面的设置,现在就可以设置文件和文件夹的审核了.(注须在NTF ...

  4. EF6 MVC5译文

    Contoso大学的Web应用程序 你在本教程中将建立一个简单的大学网站. 用户可以查看和更新学生信息,当然也包括教师的.下列图表是你将创建的应用程序截屏. 本网站的UI样式来源于内置的模板,所以教程 ...

  5. Hibernate:有了 save,为什么还需要 persist?

    背景 万物皆自然,每个 API 的设计,无论是否正确,都有其意图.因此,在学习某些框架的时候,我们需要经常思考:这个 API 的设计意图是啥? 本文来探讨一下 Session 中 persist 的设 ...

  6. .NET:遇到并发问题,什么样的情况下需要自动重试?

    背景 多用户系统会出现并发问题,应对并发问题的两种方式是“悲观锁”和“乐观锁”,多数情况下都会采用“乐观锁”,这引发了一个问题,如果检查出乐观并发异常如何重试?是让最终用户手工重试?还是让系统自动重试 ...

  7. C++ Tr1中的正則表達式

    要使用正則表達式,首先要有类库支持,C++曾经不像Java或者C#有完整的类库使用,可是在Tr1中早已提供了正则库,仅仅是非常少被人们注意罢了 TR1中包括了一个正则库,来自Boost的 regex, ...

  8. JDBC基本操作介绍

    一 .JDBC主要的API介绍 JDBC为开发人员提供了一套标准的API,都是由JAVA语言编写的类和接口.用于连接数据库和执行SQL语句.JDBC也是JAVA核心类库的一部分,位于Java.sql包 ...

  9. [转发] git设置代理

    一. 写的很好推荐,(http与ssh设置都有) https://imciel.com/2016/06/28/git-proxy/ 二. 只有 http的方式代码设置 http://stackover ...

  10. angular中定义全局变量及全局变量的使用

    一个例子,定义了两个变量,并且把变量显示出来: <!DOCTYPE html> <html ng-app="myApp"> <head> < ...