VS2017操做sql server数据库

VS2017操做sql server数据库

  1. 安装sql server数据库

    摸鱼怪在这里就不总结了,相信大家都会,实在不行就去问问度娘吧!

    摸鱼怪在这里提醒大家,如果版本太新可能会出现不兼容问题,最开始我用的是sql server2017,但版本太新VS2017无法与该数据库连接,没办法只好卸了再重装一个sql server2014。

  2. 新建一个数据库

    打开sql server,点击新建查询,复制执行下面代码:

    create database haha
    on primary(
    name = 'haha',
    filename = 'D:\test\haha.mdf',
    size = 10MB,
    maxsize = 50MB,
    filegrowth = 5MB
    )
    
    log on(
    name = 'haha_log',
    filename = 'D:\test\haha_log.ldf',
    size = 10MB,
    maxsize = 50MB,
    filegrowth = 5MB
    )
    

    sql server不会帮你新建一个文件夹,你需要去D盘新建一个test文件夹,除非test文件夹已建,或者直接修改路径,这都看你的心情

  3. 新建一个表,复制执行下面代码:
    use haha
    create table student(
    ID int primary key not null,
    name varchar(10) not null,
    age int not null
    )
    

    然后刷新数据库,就会发现多了一个test数据库,里面也多了一张student表。

  4. 为student表插入数据,复制执行下面代码:
    insert into student
    values(111,'张三',18),(222,'李四',18),(333,'老王',18);
    
  5. 控制面板配置ODBC数据源

    ODBC就是开放数据库互连,它提供了一种标准的API方法来访问数据库管理系统(DBMS)。具体配置方法大家可以参考这篇博文。

    大家如果是直接用"SQL Server身份验证“进行登录的,可以不必像博文那样新建一个用户。同时,数据源名称须和你的数据库名称一致,因为测试,这里我们就把名称改为haha

    在选择连接哪一个SQL Server?如果大家选(local)测试报错了,可以打开"SQL Server Managment Studio"在登陆界面将自己的服务器名称粘贴赋值过去试一试,摸鱼怪当初就因为服务器名称没填对掉进坑里,少了”\SQLEXPRESS“≡(▔﹏▔)≡

    然后,在选择数据库这一步,点击”更改默认的数据库“,选为haha

    测试成功后,点击确定,你就会发现”用户 DSN“里多了haha,因为懒惰,这里摸鱼怪就不贴上图片了,希望大家见谅了。其他的步骤都与那片博文一致,只需注意一下上面小小的改动O(∩_∩)O

  6. VS2017操作sql server数据库
    • 首先打开VS2017,新建一个”Windows 控制台应用程序“,位置可以修改为”D:\test\“。

    • 在ConsoleApplication1源文件,删除原来的main函数,添加如下代码

      #include
      #include
      #include
      #include
      #include
      
      void loadDatabase()
      {
      	SQLRETURN ret;
      	SQLHENV henv;
      	SQLHDBC hdbc;
      	SQLHSTMT hstmt;
      
      	ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
      	ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
      	ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
      	ret = SQLConnect(hdbc, (SQLCHAR*)"数据库名称", SQL_NTS, (SQLCHAR*)"用户名", SQL_NTS, (SQLCHAR*)"密码", SQL_NTS);
      	if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
      	{
      		std::cout << "数据库连接成功!\n";
      		ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);//申请sql语句句柄
      		SQLCHAR sql[] = "select * from student";
      		ret = SQLExecDirect(hstmt, sql, SQL_NTS);//直接执行sql语句
      		if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
      		{
      			SQLINTEGER ID,age;
      			SQLCHAR name[20];
      			SQLINTEGER len_ID, len_name, len_age;
      			while (SQLFetch(hstmt) != SQL_NO_DATA)
      			{
      				SQLGetData(hstmt, 1, SQL_C_ULONG, &ID, 0, &len_ID);
      				SQLGetData(hstmt, 2, SQL_C_CHAR, name, 10, &len_name);
      				SQLGetData(hstmt, 3, SQL_C_ULONG, &age, 0, &len_age);
      				std::cout << ID << "    " << name << "    " << age << std::endl;
      			}
      		}
      		else {
      			std::cout << "查询失败!\n";
      		}
      		SQLFreeHandle(SQL_HANDLE_STMT, hstmt);//释放语句句柄
      	}
      	else {
      		std::cout << "连接失败!\n";
      	}
      	SQLFreeHandle(SQL_HANDLE_DBC, hdbc);//释放句柄
      	SQLFreeHandle(SQL_HANDLE_ENV, henv);//释放环境句柄     
      }
      
      int main()
      {
      	loadDatabase();
      }
      

      大家在这里注意一下,上面有几处需要你自己修改,”数据库名称“也就是当前我们连接的数据库”haha“,”用户名“和”密码“是你进行SQL Server身份验证的登录名和密码,大家注意修改哦ఠൠఠ

    • 做完以上工作后,然后执行代码,就会发现,问题就找上门来了!(っ °Д °;)っ,主要问题描述为:“SQLCHAR *” 类型的实参与 “SQLWCHAR *” 类型的形参不兼容。补救方法就是”项目 —>ConsoleApplication1属性—>配置属性—>常规—>项目默认值—>字符集—>改为使用多字节字符集“。然后再次执行就成功了!


好了,摸鱼怪能力有限,目前也只能总结到这了<(_ _)>,希望对大家有所帮助吧!大家也可以了解ODBC API的更多操作!

你可能感兴趣的:(sqlserver,数据库,sqlserver)