leagalhigh 2014-04-30 10:47 采纳率: 0%
浏览 3211

vs2012连接SQL SERVER的问题

#include

#include

#include

#include

#include

#include

#include

SQLHENV henv = SQL_NULL_HENV;

SQLHDBC hdbc1 = SQL_NULL_HDBC;

SQLHSTMT hstmt1 = SQL_NULL_HSTMT;

/*
cpp文件功能说明:
1.数据库操作中的添加,修改,删除,主要体现在SQL语句上
2.采用直接执行方式和参数预编译执行方式两种
/

int main(){

RETCODE retcode;

SQLCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "csql",

szUID[MAXNAME] = "sa",

szAuthStr[MAXNAME] = "";

//SQL语句

//直接SQL语句

SQLCHAR sql[37] = "insert into test values('aaa','100')";

//预编译SQL语句

SQLCHAR pre_sql[29] = "insert into test values(?,?)";

//1.连接数据源

//1.环境句柄

retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);

retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,

(SQLPOINTER)SQL_OV_ODBC3,

SQL_IS_INTEGER);

//2.连接句柄

retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);

retcode = SQLConnect(hdbc1, szDSN, 4, szUID, 2, szAuthStr, 0);

//判断连接是否成功

if ( (retcode != SQL_SUCCESS) && (retcode != SQL_SUCCESS_WITH_INFO) ) {

printf("连接失败!\n");

} else {

//2.创建并执行一条或多条SQL语句

/

1.分配一个语句句柄(statement handle)
2.创建SQL语句
3.执行语句
4.销毁语句
*/

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc1, &hstmt1);

//第一种方式

//直接执行

//添加操作

//SQLExecDirect (hstmt1,sql,37);

    //第二种方式  
    //绑定参数方式  
    char a[200]="bbb";  
    char b[200]="200";  
    SQLINTEGER   p   =   SQL_NTS;  
    //1预编译  
    SQLPrepare(hstmt1,pre_sql,29); //第三个参数与数组大小相同,而不是数据库列相同  
    //2绑定参数值  
    SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p);  
    SQLBindParameter(hstmt1,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&b,0,&p);  
    //3 执行  
    SQLExecute(hstmt1);  

    printf("操作成功!");  
    //释放语句句柄  
    SQLCloseCursor (hstmt1);  
    SQLFreeHandle (SQL_HANDLE_STMT, hstmt1);  

}     
//3.断开数据源  
/* 
 1.断开与数据源的连接. 
 2.释放连接句柄. 
 3.释放环境句柄 (如果不再需要在这个环境中作更多连接) 
*/  
SQLDisconnect(hdbc1);      
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);     
SQLFreeHandle(SQL_HANDLE_ENV, henv);     
return(0);     

}

这是源代码 ,但我的VS2012里却总出现这样的问题: 无法从“const char [1]”转换为“SQLWCHAR [129]”或者 不能将参数 2 从“SQLCHAR [29]”转换为“SQLWCHAR *”
等等。总之就是SQLCHAR 和 SQLWCHAR 不能兼容的问题 。请问这到底是怎么回事啊?

  • 写回答

1条回答 默认 最新

  • ChrisyehGone 2015-08-12 08:58
    关注

    如果不能那是因为VS2012与sql server 2008不兼容情况,需要删除VS2012 express LocalDB即可。
    再次,将sql server 配置管理器=》sql server网络配置=》MSSQLSERVER协议=>VIA禁用。
    最后,重新启动“sql server服务”就可以连接上本地或远程服务器!

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?