SQL Server中连接两表修改数据

平常一直只用到了连接查询,今天修改数据的时候突然发现要用到另一个表的数据,然后百度了一下,学会了连接修改,sql语句如下

update table1 set table1.name=table2.name from table2 inner join table1 on table1.id=table2.id where table1.sex='男'
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 C++ 获取 SQL Server 数据所有表的数据,你需要使用 Microsoft 的 SQL Server Native Client 或 ODBC 驱动程序。 下面是一段使用 SQL Server Native Client 的代码示例,它将获取指定数据所有表的数据: ```cpp #include <iostream> #include <windows.h> #include <sqltypes.h> #include <sql.h> #include <sqlext.h> int main() { SQLHANDLE henv = SQL_NULL_HENV; SQLHANDLE hdbc = SQL_NULL_HDBC; SQLHANDLE hstmt = SQL_NULL_HSTMT; // 初始化环境句柄 SQLRETURN ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { std::cout << "Error allocating environment handle!" << std::endl; return -1; } // 设置环境属性 ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { std::cout << "Error setting environment attribute!" << std::endl; return -1; } // 分配连接句柄 ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { std::cout << "Error allocating connection handle!" << std::endl; return -1; } // 连接数据库 const char* connstr = "DRIVER={SQL Server Native Client 11.0};SERVER=localhost;DATABASE=mydatabase;Trusted_Connection=yes;"; ret = SQLDriverConnect(hdbc, NULL, (SQLCHAR*)connstr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { std::cout << "Error connecting to database!" << std::endl; return -1; } // 分配语句句柄 ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { std::cout << "Error allocating statement handle!" << std::endl; return -1; } // 查询所有表名 SQLCHAR* query = (SQLCHAR*)"SELECT name FROM sys.tables"; ret = SQLExecDirect(hstmt, query, SQL_NTS); if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) { std::cout << "Error executing statement!" << std::endl; return -1; } // 遍历结果集,输出表名 SQLCHAR name[256]; while (SQLFetch(hstmt) == SQL_SUCCESS) { SQLGetData(hstmt, 1, SQL_C_CHAR, name, 256, NULL); std::cout << name << std::endl; } // 释放资源 SQLFreeHandle(SQL_HANDLE_STMT, hstmt); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } ``` 这段代码使用 sys.tables 系统视图获取所有表名,并遍历结果集输出表名。你可以根据需要修改查询语句和输出方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值