C++连接sqlserver

项目结构

ConsoleApplication.cpp

#include <iostream>
using namespace std;

#include <stdio.h>
#define OTL_ODBC_MSSQL_2008 
#include "..\c++_otlv4/otlv4_h2/otlv4.h"

otl_connect db; // connect object

void insert(void)
// insert rows into table
{
	otl_stream o(100, 
		"insert into test_tab values(:f1<int>,:f2<char[31]>,:f3<char[31]>,:f4<char[31]>,:f5<char[31]>)",
		db 
	);

	o.set_commit(0); // set stream's auto-commit to OFF.

	try {
	/*	o << 1 << "Line1"; 
		o.flush(); 

		otl_write_row(o, 1, "Line1");
		o.flush();*/

		for (int i = 1; i <= 100000; ++i) {
			o << i << "你爱打不打断打实大" << "2775275" << "fsdfdfs" << "你爱打算打实打实大";
		}
	}
	catch (otl_exception& p) {
		if (p.code == 2601) {
			// ... duplicate key ...
			cout << "STREAM ERROR STATE=" << o.get_error_state() << endl;
			o.clean(1); 
		}
		else
			throw; // re-throw the exception to the outer catch block.
	}
	/*o << 2 << "Line2"; 
	o.flush();*/

	db.commit(); // commit transaction
}

void select(void)
{
	otl_stream i(10, // buffer size
		"select * from test_tab",
		// SELECT statement
		db // connect object
	);
	// create select stream

	int f1;
	char f2[31];

	for (auto& it : i) {
		otl_read_row(it, f1, f2);
		cout << "f1=" << f1 << ", f2=" << f2 << endl;
	}
}
int main()
{
	otl_connect::otl_initialize(); // initialize ODBC environment

	DWORD   start, end;  //定义程序运行开始时间和结束时间
	start = GetTickCount64();  //设定开始时间

	cout << "开始";
	try {

		db.rlogon("driver=sql server;server=192.168.1.104;UID=sa;PWD=123;database=Test"); // connect to ODBC

		otl_cursor::direct_exec
		(
			db,
			"drop table test_tab",
			otl_exception::disabled // disable OTL exceptions
		); // drop table

		otl_cursor::direct_exec
		(
			db,
			"create table test_tab(f1 int, f2 varchar(30), f3 varchar(30), f4 varchar(30), f5 varchar(30))"
		);  // create table

		insert(); // insert records into table
		//select(); // select records from table

	}
	catch (otl_exception& p) { // intercept OTL exceptions
		cerr << p.msg << endl; // print out error message
		cerr << p.stm_text << endl; // print out SQL that caused the error
		cerr << p.sqlstate << endl; // print out SQLSTATE message
		cerr << p.var_info << endl; // print out the variable that caused the error
	}

	db.logoff(); // disconnect from Oracle

	end = GetTickCount64();
	cout << "use time:   " << (end - start)/1000.00<<"秒" << endl;

	return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要输出 SQL Server 数据,可以使用 ODBC API 和 C 语言编写程序连接到 SQL Server 数据库。以下是一个简单的示例程序,可以用来连接到 SQL Server 数据库,并查询并输出数据。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sql.h> #include <sqlext.h> void show_error(unsigned int handletype, const SQLHANDLE& handle, const char* message) { SQLCHAR sqlstate[1024]; SQLCHAR message[1024]; if (SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, 1024, NULL)) { printf("%s: %s\n", message, sqlstate); } } int main() { SQLHENV env; SQLHDBC dbc; SQLHSTMT stmt; SQLRETURN ret; SQLCHAR outstr[1024]; SQLSMALLINT outstrlen; char* conn_str = "Driver={SQL Server};" "Server=localhost;" "Database=your_database_name;" "UID=your_username;" "PWD=your_password;"; // Allocate an environment handle SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); // Allocate a connection handle SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); // Connect to the DSN ret = SQLDriverConnect(dbc, NULL, (SQLCHAR*)conn_str, SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT); if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret) { show_error(SQL_HANDLE_DBC, dbc, "SQLDriverConnect failed"); return EXIT_FAILURE; } // Allocate a statement handle SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt); // Execute the query ret = SQLExecDirect(stmt, (SQLCHAR*)"SELECT * FROM your_table_name", SQL_NTS); if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret) { show_error(SQL_HANDLE_STMT, stmt, "SQLExecDirect failed"); return EXIT_FAILURE; } // Fetch and print the results SQLCHAR name[1024]; int age; while (SQLFetch(stmt) == SQL_SUCCESS) { SQLGetData(stmt, 1, SQL_C_CHAR, name, sizeof(name), NULL); SQLGetData(stmt, 2, SQL_C_LONG, &age, sizeof(age), NULL); printf("%s, %d\n", name, age); } // Free the statement handle SQLFreeHandle(SQL_HANDLE_STMT, stmt); // Disconnect SQLDisconnect(dbc); // Free the connection handle SQLFreeHandle(SQL_HANDLE_DBC, dbc); // Free the environment handle SQLFreeHandle(SQL_HANDLE_ENV, env); return EXIT_SUCCESS; } ``` 在程序中,需要替换 `your_database_name`、`your_username`、`your_password` 和 `your_table_name` 为实际的数据库名称、用户名、密码和表名。然后编译并运行程序即可输出 SQL Server 数据库中的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值