大二上学期结束了。哎真是快的很啊,这学期感觉没学到啥东西也就一直没有写博客。
《UML》学的迷迷糊糊,《计算机网络》也一般般,《数据库》考的贼撇。
唉真是个垃圾还没有自知自明。
我知道你根本不会在意我写的作业,看也不会看一眼。随便吧,我做我该做的。
顺便就将上次布置的图书管理系统修改一下连上数据库吧。学完数据库还在抱怨啥也没学到,不知道怎么写数据库程序,
刚开始做作业时一头雾水完全不知道怎么开始,怎么连接数据库。觉得太难了自己不可能完成,然后网上到处搜,
慢慢的试,最终做出来后却又觉得没什么意思也就那么回事自己还是个垃圾。
进入正题
1、创建数据库
sqlsever创建数据库library,建表library
2、导入数据
建好表过后可以直接从excel表中导入到数据库中我们建的表里面。
步骤:单击数据库右键->任务->导入数据.....然后按正常逻辑操作OK了
导出表到excel也是一样的。
然后查询一下:select*fromlibrary
3、创建用户
创建用户分配赋予权限。一般用户normaluser只拥有读的权限,管理员拥有读和写的权限。
我这里创建了普通用户normaluser,密码111111.
管理员用户名cjw,密码就不放出来了。
4、配置ODBC数据源
数据库建好了,用户角色权限分配好了,就可以配置数据源了。打开ODBC数据源管理程序。
然后就默认下一步。。。
测试一下数据源
测试成功了。可以返回看一下我的library已经有了。
5、连接数据库
一、使用ODBCAPI建立数据库连接分为3部分:1.申请环境句柄,2.使用环境句柄申请连接句柄3.使用连接句柄连接数据库
//1.申请环境句柄SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);//2.使用环境句柄申请连接句柄SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);//3.使用连接句柄连接数据库SQLRETURNSOL_RET=SQLConnect(hdbc,szDSN,SQL_NTS,szUID,SQL_NTS,szAuthStr,SQL_NTS);if((SOL_RET!=SQL_SUCCESS)&&(SOL_RET!=SQL_SUCCESS_WITH_INFO)){printf("连接失败!");exit(0);}
6、执行SQL语句
二、创建并执行一条或多条SQL语句1.分配一个语句句柄(statementhandle)2.创建SQL语句3.执行语句4.销毁语句
SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);//每次循环分配一个句柄
7、断开数据源
三、断开数据源1.断开与数据源的连接.2.释放连接句柄.3.释放环境句柄(如果不再需要在这个环境中作更多连接)
SQLDisconnect(hdbc);SQLFreeHandle(SQL_HANDLE_DBC,hdbc);SQLFreeHandle(SQL_HANDLE_ENV,henv);
8、检查SQL语句
字符串拼接SQL语句时检查SQLstate状态,分析错误码。
通过SQLGetDiagRec和SQLGetDiagField检索诊断信息。
//检查错误StatusCheck(char*sql,char*initialize){SQLCHARSqlState[6],Msg[SQL_MAX_MESSAGE_LENGTH];SQLINTEGERNativeError;SQLSMALLINTi,MsgLen;SQLRETURNrc1,rc2;//执行SQLrc1=SQLExecDirect(hstmt,(UCHAR*)sql,SQL_NTS);//检查错误if((rc1==SQL_SUCCESS_WITH_INFO)||(rc1==SQL_ERROR)){SQLLENnumRecs=0;SQLGetDiagField(SQL_HANDLE_STMT,hstmt,0,SQL_DIAG_NUMBER,&numRecs,0,0);//获取SqlStatei=1;while(i<=numRecs&&(rc2=SQLGetDiagRec(SQL_HANDLE_STMT,hstmt,i,SqlState,&NativeError,Msg,sizeof(Msg),&MsgLen))!=SQL_NO_DATA){cout< 9、程序功能(增删改查.....) 连接数据库,执行sql语句都可以了,就剩下正常的程序逻辑部分。这就不多说了。直接上代码。