• Sql 常用的语句实例与代码


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

     

    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.       
    13.     int nItem;  
    14.     _variant_t vName,vBanJi,vYuWen,vShuXue,vYinWen;  
    15.     try  
    16.     {  
    17.         // 连接数据库,打开MainInfo表  
    18.         m_pRecordset.CreateInstance("ADODB.Recordset");   
    19.         m_pRecordset->Open("select * from db_info",_variant_t((IDispatch*)  
    20.             m_pConnection,TRUE),adOpenStatic,adLockOptimistic,adCmdText);  
    21.           
    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.   
    32.             // 更新上面的ListBox  
    33.             nItem = m_LineList.InsertItem(0xffff,(_bstr_t)vName);  
    34.             m_LineList.SetItem(nItem,1,1,(_bstr_t)vBanJi,NULL,0,0,0);  
    35.             m_LineList.SetItem(nItem,2,1,(_bstr_t)vYuWen,NULL,0,0,0);  
    36.             m_LineList.SetItem(nItem,3,1,(_bstr_t)vShuXue,NULL,0,0,0);  
    37.             m_LineList.SetItem(nItem,4,1,(_bstr_t)vYinWen,NULL,0,0,0);  
    38.               
    39.             // 移动记录集指针到下一条  
    40.             m_pRecordset->MoveNext();  
    41.             Sleep(5);  
    42.         }  
    43.     }  
    44.     catch (_com_error e)  
    45.     {  
    46.         // 读取出数据库记录出错  
    47.         CString strTemp;  
    48.         strTemp.Format("读取数据库时出错,错误代码:『%s』",GetLastError());  
    49.         AfxMessageBox(strTemp);  
    50.     }  
    51. }  

     

    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.   
    20.         // 执行SQL语句  
    21.         m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);  
    22.         MessageBox("添加成功!","提示");  
    23.     }  
    24.     catch(_com_error e)  
    25.     {  
    26.         // 添加出错  
    27.         CString errormessage;    
    28.         errormessage.Format("添加失败,请检查姓名『%s』是否已经存在!/n错误信息:『%s』",m_Name,e.ErrorMessage());  
    29.         AfxMessageBox(errormessage);  
    30.     }  
    31. }  

     

    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.   
    21.         // 执行SQL语句  
    22.         m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);  
    23.           
    24.         // 刷新重新读取数据库  
    25.         OnBtnRead();  
    26.         MessageBox("修改成功!","提示");  
    27.     }  
    28.     catch(_com_error e)  
    29.     {  
    30.         // 修改失败  
    31.         CString errormessage;    
    32.         errormessage.Format("修改失败,错误信息:『%s』",e.ErrorMessage());  
    33.         AfxMessageBox(errormessage);  
    34.     }  
    35. }  

     

    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.           
    18.         UpdateData(TRUE);  
    19.         sql.Format("delete from db_info where [姓名]='%s'",m_Name);  
    20.   
    21.         // 执行SQL语句  
    22.         m_pConnection->Execute((_bstr_t)sql,NULL,adExecuteNoRecords);  
    23.           
    24.         OnBtnRead();  
    25.         MessageBox("删除成功!","提示");  
    26.     }  
    27.     catch(_com_error e)  
    28.     {  
    29.         CString errormessage;    
    30.         errormessage.Format("删除失败,错误信息:『%s』",e.ErrorMessage());  
    31.         AfxMessageBox(errormessage);  
    32.     }  
    33. }  

     

     

     

    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.   
    16.         CString sql;  
    17.         int     nItem;  
    18.   
    19.         _variant_t vName,vBanJi,vYuWen,vShuXue,vYinWen;  
    20.         sql.Format("select * from db_info where [姓名] like /'%%%s%%/'",m_FindName);  
    21.   
    22.         m_pRecordset.CreateInstance("ADODB.Recordset");  
    23.         m_pRecordset->Open((_variant_t)sql,_variant_t((IDispatch*)  
    24.                 m_pConnection,TRUE),adOpenStatic,adLockOptimistic,adCmdText);  
    25.           
    26.         // 判断记录集指针标志,是否读取完毕  
    27.         while(!m_pRecordset->adoEOF)  
    28.         {  
    29.             // 获取记录集  
    30.             vName   = m_pRecordset->GetCollect("姓名");  
    31.             vBanJi  = m_pRecordset->GetCollect("班级");  
    32.             vYuWen  = m_pRecordset->GetCollect("语文");  
    33.             vShuXue = m_pRecordset->GetCollect("数学");  
    34.             vYinWen = m_pRecordset->GetCollect("英语");  
    35.               
    36.             // 更新上面的ListBox  
    37.             nItem = m_LineList.InsertItem(0xffff,(_bstr_t)vName);  
    38.             m_LineList.SetItem(nItem,1,1,(_bstr_t)vBanJi,NULL,0,0,0);  
    39.             m_LineList.SetItem(nItem,2,1,(_bstr_t)vYuWen,NULL,0,0,0);  
    40.             m_LineList.SetItem(nItem,3,1,(_bstr_t)vShuXue,NULL,0,0,0);  
    41.             m_LineList.SetItem(nItem,4,1,(_bstr_t)vYinWen,NULL,0,0,0);  
    42.               
    43.             // 移动记录集指针到下一条  
    44.             m_pRecordset->MoveNext();  
    45.             Sleep(5);  
    46.         }  
    47.         CString strTotal;  
    48.         int nTotals=m_pRecordset->GetRecordCount();  
    49.         strTotal.Format("查询完成,总共有%d条记录!",nTotals);  
    50.           
    51.         SetDlgItemText(IDC_STATIC_RESULT,strTotal);  
    52.     }  
    53.     catch (_com_error e)  
    54.     {  
    55.         // 读取出数据库记录出错  
    56.         CString strTemp;  
    57.         strTemp.Format("读取数据库时出错,错误代码:『%s』",GetLastError());  
    58.         AfxMessageBox(strTemp);  
    59.     }  
    60. }  

     

    8、总结

     

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

  • 相关阅读:
    使用 python 实现 memcached 的启动服务脚本 rc
    iNeedle系统之国舜项目
    CentOS系统在不重启的情况下为虚拟机添加新硬盘
    Windows下常用软件工具的命令
    dpdk在虚拟机上出错处理
    Linux工具之man手册彩色页设置
    使用VIM插件ctags来阅读C代码
    Linux命令行上传文件到百度网盘
    ng-repeat 的重复问题
    python 启动简单web服务器
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/3185822.html
Copyright © 2020-2023  润新知