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 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大