1.操作系统:windows7
2.采用SQL SERVER 2012数据库管理系统作为实验平台
3.使用 microsoft Visual Studio 2012 作为应用程序编写的平台
1.修改SQL Sever中管理员sa的密码,默认数据库
(1)先以windows身份验证登陆SQL Sever2012
(2)修改sa密码,因为该密码在建立应用程序与ODBC数据源的连接中用到,所以要获取sa的密码,sa的默认数据库改为在应用程序中使用的数据库。
(3)然后右键点击实例属性,修改安全性为SQL Server和Window身份验证模式
(4)点击确定之后,一定要重启实例,否则之前的修改没办法生效。
(5)重启之后,即可选择SQL Sever 身份验证登陆,假如登陆成功,这说明已经修改成功了。假如无法登陆,则说明不正确,需要重新以windows身份验证登陆,重新修改sa密码。
2.建立QDBC数据源
(1)打开ODBC
(2)添加用户DSN选择驱动程序
由于SQL Sever端是由SQL Sever 2012充当,在VS2012中编写的是客户端查询数据库数据的程序,所以选择的是客户端。
(3)配置数据源
点击下一步,输入之前已经修改过的sa密码
(4)测试数据源
假如测试失败的话,可以让sa先在SQL Sever2012上登陆成功再测试,应该就会成功。
3.在VS2012上编写的数据库访问应用程序
(1)新建空项目
建立win32控制台应用程序在电脑上运行不成功,SQLConnect函数老是连接不上,在空项目里编写控制台程序则可以运行(感谢球儿的提醒与帮忙~)。但是我身边有的同学的电脑貌似win32控制台应用程序就可以
(2)编写代码
#include
#include
#include
#include
#include
#include "sql.h"
#include "sqltypes.h"
#include "sqlext.h"
using namespace std;
RETCODE retcode; //结果返回集
SQLHDBC hdbc; //定义连接句柄
void SQL(char* ); //执行SQL语句子程序
void print(); //打印子程序
void print2();
void print3();
void partprint(); //打印部分查询子程序
void partprint2();
void partprint3();
int main()
{
char str[200], pstr[200];
int dbchoice;
int opchoice;
SQLHANDLE henv; //定义环境句柄
unsigned char SY[] = "experiment"; //数据源名称
unsigned char db2[] = "sa"; //用户名
unsigned char pass[] = "123456"; //密码
//分配ODBC环境
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); //设置环境属性
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); //分配连接句柄
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
retcode = SQLConnect(hdbc, SY, SQL_NTS, db2, SQL_NTS,pass, SQL_NTS); //连接
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
while (1){
cout << "请选择数据库类型(1:course, 2:student, 3:sc):" ;
cin >> dbchoice;
if (dbchoice >=4 || dbchoice <= 0)
cout << "Error:不存在该数据库!\n";
else{
cout << "请选择操作类型(1:查询,2:update, drop,insert):";
cin >> opchoice;
if (opchoice == 1){
if (dbchoice == 1)
partprint();
else if (dbchoice == 2)
partprint2();
else if (dbchoice == 3)
partprint3();
}
else if (opchoice ==2){
cout << "请输入操作:" <= 90";
int i = 1;
SQLHSTMT hstmt;
char L1[50], L2[50], L3[50];
long lenOut1, lenOut2, lenOut3;
cout << "select student.sno, student.sname,cname from sc, student,course where sc.sno = student.sno and sc.cno = course.cno and grade >= 90" <
运行效果: