samsonhahaha
samsonhahaha
2017-05-06 16:49

ODBC INSERT语句怎么向多个表插入数据,有主键和外键引用的。怎么可以不用一条一条插

30
  • c++
  • odbc
  • sql

怎么向多个表中插入数据。。比如有五六个表,类似student,course,speciality,teacher这些表。
一条一条插入很麻烦吧,应该有更好的方法。但我只会用一条一条插入

能不能用循环一次性插很多条。我只能实现一次插一条记录
SQLCHAR sqlInsertDe1[100] = "insert department(dno,dept_name) values('d01', '软件学院')";
SQLCHAR sqlInsertDe2[100] = "insert department(dno,dept_name) values('d02', '计算机学院')";

SQLCHAR sqlInsertSpe1[100] = "insert speciality values('s01', 'd01', '软件工程')";
SQLCHAR sqlInsertSpe2[100] = "insert speciality values('s02', 'd02', '计算机科学')";

SQLCHAR sqlInsertTe1[100] = "insert teacher(t_no, t_name, dno) values('t01', 'Tang', 'd01') ";
SQLCHAR sqlInsertTe2[100] = "insert teacher(t_no,t_name,dno) values('t02', 'chen', 'd01')";

SQLCHAR sqlInsertStu1[100] = "insert student values('20130001', 'Tom', '男', '19940101', 'd01', 's01', 'rg1')";
SQLCHAR sqlInsertStu2[100] = "insert student values('20130002', 'Jane', '女', '19940201', 'd01', 's01', 'rg1')";

SQLCHAR sqlInsertCou1[80] = "insert course(cno,cname,spno) values('c1', '数据库', 's01')";
SQLCHAR sqlInsertCou2[80] = "insert course(cno,cname,spno) values('c2', '数据结构', 's02')";

SQLCHAR sqlInsertSt_Cou1[100] = "insert student_course values('20130001', 1, 85)";
SQLCHAR sqlInsertSt_Cou2[100] = "insert student_course values('20130002', 2, 78)";

result = SQLPrepare(hStmt, sqlInsertDe1, SQL_NTS);

if ((result != SQL_SUCCESS) && (result != SQL_SUCCESS_WITH_INFO))
{
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
printf("绑定失败!");
getchar();
exit(0);
}
// 执行SQL语句
result = SQLExecute(hStmt);
if (result == SQL_ERROR)
{
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
printf("执行sql失败!");
getchar();
exit(0);
}
// 执行完sql语句之后,要读取数据
/*
while ((result = SQLFetch(hStmt)) != SQL_NO_DATA)
cout << szName << endl;
*/
// 释放句柄和断开连接
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);

只会这么用。前面的那些环境,句柄都设置好了
更多

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

0条回答