c语言怎么键盘输入数据库数据,键盘输入数据并修改数据库sql srver+代码
时间: 2024-02-25 20:54:20 浏览: 190
要在 C 语言中通过键盘输入数据并修改数据库,你需要使用 SQL Server 的 C API。下面是一个简单的示例代码,用于演示如何通过键盘输入数据并将其添加到 SQL Server 数据库中。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sql.h>
#include <sqlext.h>
#define SQL_RESULT_LEN 240
#define SQL_RETURN_CODE_LEN 1000
void show_error(unsigned int handletype, const SQLHANDLE& handle) {
SQLCHAR sqlstate[SQL_RETURN_CODE_LEN];
SQLCHAR message[SQL_RETURN_CODE_LEN];
if (SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, SQL_RETURN_CODE_LEN, NULL)) {
printf("Message: %s\n", message);
}
}
int main() {
SQLHANDLE sqlenvhandle;
SQLHANDLE sqlconnectionhandle;
SQLHANDLE sqlstatementhandle;
SQLRETURN retcode;
SQLCHAR retconstring[SQL_RETURN_CODE_LEN];
SQLCHAR sqlquery[SQL_RETURN_CODE_LEN];
SQLINTEGER sql_input;
SQLCHAR sql_name[20];
SQLCHAR sql_age[20];
SQLCHAR sql_gender[20];
int loop = 1;
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle)) {
return 1;
}
if (SQL_SUCCESS != SQLSetEnvAttr(sqlenvhandle, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0)) {
return 1;
}
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle)) {
return 1;
}
//连接数据库
switch (SQLDriverConnect(sqlconnectionhandle, NULL, (SQLCHAR*)"DRIVER={SQL Server};SERVER=your_server;DATABASE=your_database;UID=your_username;PWD=your_password;", SQL_NTS, retconstring, 1024, NULL, SQL_DRIVER_NOPROMPT)) {
case SQL_SUCCESS_WITH_INFO:
show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
break;
case SQL_INVALID_HANDLE:
case SQL_ERROR:
show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
retcode = -1;
break;
default:
break;
}
if (retcode == -1) {
return 1;
}
//分配语句句柄
if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle)) {
return 1;
}
while (loop) {
printf("请输入姓名:");
scanf("%s", sql_name);
printf("请输入年龄:");
scanf("%d", &sql_input);
sprintf((char*)sql_age, "%d", sql_input);
printf("请输入性别:");
scanf("%s", sql_gender);
//创建查询语句
sprintf((char*)sqlquery, "INSERT INTO your_table (name, age, gender) VALUES ('%s', %s, '%s')", sql_name, sql_age, sql_gender);
//执行查询语句
retcode = SQLExecDirect(sqlstatementhandle, sqlquery, SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
printf("数据添加成功!\n");
}
else {
printf("数据添加失败!\n");
show_error(SQL_HANDLE_STMT, sqlstatementhandle);
}
printf("是否继续添加数据?(1-是,0-否)");
scanf("%d", &loop);
}
//释放语句句柄
if (sqlstatementhandle != SQL_NULL_HANDLE) {
SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle);
}
//关闭连接
SQLDisconnect(sqlconnectionhandle);
//释放连接句柄
if (sqlconnectionhandle != SQL_NULL_HANDLE) {
SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
}
//释放环境句柄
if (sqlenvhandle != SQL_NULL_HANDLE) {
SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);
}
return 0;
}
```
请将上面代码中的 "your_server"、"your_database"、"your_username" 和 "your_password" 分别替换为你的 SQL Server 服务器地址、数据库名称、用户名和密码。
阅读全文