《学籍管理系统,C++连接sql.doc》由会员分享,可在线阅读,更多相关《学籍管理系统,C++连接sql.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流学籍管理系统,C+连接sql【精品文档】第 7 页#include #include #include using std:string;using namespace std; C+连接SQL数据库第一步 系统配置 1.设置SQLSERVER服务器为SQL登录方式,并且系统安全性中的sa用户要设置登录功能为“启用”,还有必须要有密码。 2.需要在ODBC中进行数据源配置,数据源选”SQL SERVER”,登录方式使用“使用输入用户登录ID和密码的SQL SERVER验证”, 并填写登录名(sa)和密码,注意一点,密码不能为空,这就意味着你的sa用户必须
2、得有密码。否则无法通过系统本身的安全 策略。测试 通过就完成了配置。 C+连接SQL数据库第二步 C+与SQL连接初始化 1.在建立的C+项目中引入ADO 具体代码如下:#pragma warning(disable:4146)#pragma warning(disable:4786)#import c:Program FilesCommon FilesSystemadomsado15.dll no_namespace rename(EOF, adoEOF)/mainint main()system(COLOR A);BOOL FLAG = TRUE;int flag = 0;_Connect
3、ionPtr m_pConnection = NULL; /connection objects pointer _CommandPtr m_pCommand; /command objects pointer _ParameterPtr m_pParameter; /Parameter objects pointer _RecordsetPtr m_pRecordset; CoInitialize(NULL);/COM注册不可少int userright=0;/用户权限,1为管理员,2为教师char username12; 定义_ConnectionPtr变量后调用Connection对象的
4、Open方法建立与服务器的连接。 数据类型_ConnectionPtr实际上是由类模板_com_ptr_t得到的一个具体的实例类。_ConnectionPtr类封装了Connection对象的Idispatch接 口指针及其一些必要的操作。可以通过这个指针操纵Connection对象。/例如连接SQLServer数据库,代码如下:/连接到MS SQL Server /初始化指针 HRESULT hr = m_pConnection.CreateInstance(_uuidof(Connection); if (FAILED(hr) return 0; /初始化链接参数 _bstr_t strC
5、onnect = Driver=sql server;server=127.0.0.1;uid=sa;pwd=3738358261;database=student; /SQLSERVER /Database指你系统中的数据库名 /执行连接 try / Open方法连接字串必须四BSTR或者_bstr_t类型 m_pConnection-Open(strConnect, , , NULL); catch(_com_error &e) /MessageBox(e.Description(),警告, MB_OK|MB_ICONINFORMATION);coute.Description()endl
6、;/发生链接错误 C+连接SQL数据库第三步 简单的数据连接 /定义_RecordsetPtr变量,调用它Recordset对象的Open,即可打开一个数据集 /初始化过程 以下是个实例 /_RecordsetPtr pRecordset; / 登录int loginflag=1;while(loginflag)char password12;coutusername;coutpassword;char sqllogin100;sprintf(sqllogin,select * from tb_user where uname = %s and upwd = %s,username,passw
7、ord);m_pRecordset=m_pConnection-Execute(_bstr_t(sqllogin), NULL, adCmdText);if(!m_pRecordset-adoEOF)cout登录成功!;coutFields-GetItem(_variant_t(uright)-Value);if(1=1)cout管理员登录;userright=1;elsecout用户登录endl;userright=2;loginflag=0;elsecout登录失败,请重新登录!endl;system(cls);if(userright=1)cout登录状态:管理员endl;elsecou
8、t登录状态:用户endl;while(FLAG)coutendlendl;cout -endl - 学生学籍管理系统 -endl -endlendl -endl - 請根據以下數字選擇 -endl -endl - -endl - 1.輸出學生信息 -endl - -endl - 2.输入學生信息 -endl - -endl - 3.查询學生信息 -endl - -endl - 4.軟件幫助 -endl - -endl -endlendlflag;switch(flag)case 1:system(cls);/输出所有信息char sqlshows50=select * from tb_stud
9、ent;m_pRecordset=m_pConnection-Execute(_bstr_t(sqlshows), NULL, adCmdText);/将查询数据导入m_pRecordset数据容器 /至此 你的SQL语句已经执行完成了m_pRecordset内的数据就是你执行的结果。/取得记录:cout 学号 姓名 性别 班级 户籍 adoEOF)/遍历并读取name列的记录并输出 coutGetFields()-GetItem(学号)-Value ; coutGetFields()-GetItem(姓名)-Value ; coutGetFields()-GetItem(性别)-Value
10、; coutGetFields()-GetItem(班级)-Value ; coutGetFields()-GetItem(户籍)-ValueMoveNext();break;case 2:if(userright=1)system(cls);/s输入char name50;char sno12;char sex2;char address50;char sclass20;coutsno;coutname;coutsex;coutsclass;coutaddress;char strsql120;sprintf(strsql,insert into tb_student (学号,姓名,性别,班
11、级,户籍) values(%s,%s,%s,%s,%s),sno,name,sex,sclass,address);m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);cout输入成功!endl;elsecout没权限!;break;case 3:/查询if(userright=1)system(cls);char sno12;coutsno;char strsql100;sprintf(strsql,select * from tb_student where 学号=%s,sno);m_pRecordset=m
12、_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);cout 学号 姓名 性别 班级 户籍 adoEOF)/遍历并读取每列的记录并输出 flag=1;coutGetFields()-GetItem(学号)-Value ; coutGetFields()-GetItem(姓名)-Value ; coutGetFields()-GetItem(性别)-Value ; coutGetFields()-GetItem(班级)-Value ; coutGetFields()-GetItem(户籍)-ValueMoveNext();if(flag=0)
13、cout不存在此学号!endl;elsecout没权限;break;case 4:/删除if(userright=1)system(cls);char sno12;coutsno;char strsql100;sprintf(strsql,select * from tb_student where 学号=%s,sno);m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);int flag=0;if(!m_pRecordset-adoEOF)/判断是否存在此学号 sprintf(strsql,delete tb_student where 学号=%s,sno);m_pRecordset=m_pConnection-Execute(_bstr_t(strsql),NULL,adCmdText);cout删除成功!endl;elsecout不存在此学号!endl;elsecout没权限;break;case 0:exit(0);break;default:cout选择错误 ,重试!endl;break;CoUninitialize( );return 1;