1. 如何使用odbc连接数据库
使用odbc连接数据库的步骤如下:
1、首先安装Mysql
odbc
connector
插件。配置32位ODBC数据源,选择“控制面板”->"系统和安全"->"管理工具",如下图所示:
2、双击ODBC数据源(32位),进入下面界面,如下图所示:
3、切换至“系统DSN”选项卡,滚动并选择MySQL
ODBC
5.3
Unicode
Driver,单击完成,如下图所示:
4、配置数据源与用户名密码,并选择相应的数据库(注:Data
Source
Name
需要自己命名,Database
需要选择自己需要使用的数据库),以下是配置好的数据源,如下图所示:
5、打开SSDT,新建ODBC数据源,选择刚刚建立的数据源,输入用户名和密码(与设置数据源的时候的用户名和密码一致),如下图所示:
2. 如何用ODBC访问SQL数据库
1.选择“开始”→“管理工具”→“数据源(ODBC)”选项,显示“ODBC数据源管理器”对话框。
2.切换到“系统DSN”选项卡,默认情况下计算机中没有部署和任何数据库的连接。
3.单击“添加”按钮,显示“创建新数据源”对话框。在“选择您想为其安装数据源的驱动程序”列表中,选择“SQL Server”选项。
4.单击“完成”按钮,启动创建新数据源向导,显示“创建到SQL Server的新数据源”对话框。在“名称”文本框中,键入数据源的名称,在“服务器”列表中选择目标SQL Server 2008数据库服务器,或者键入数据库服务器的名称。
5.单击“下一步”按钮,显示下图对话框,设置数据库的身份验证方法。ODBC支持基于Windows NT模式的身份验证和基于SQL Server的验证模式。本例中选择SQL Server验证模式。在“登录ID”文本框中,键入数据库管理员的名称,在“密码”文本框键入数据库管理员的密码。
6.单击“下一步”按钮,显示下图所示的对话框。设置连接的目标SQL Server 2008数据库服务器后,默认连接的数据库。默认没有选择任何数据库,其他选项使用默认值即可。
7.单击“下一步”设置连接到SQL Server 2008的数据库参数,建议使用默认值。如果在部署SQL Server 2008的过程中,更改了默认的数据库参数,建议在此对话框中设置和部署数据库时使用相同的参数。
8.单击“完成”按钮,显示创建ODBC数据源使用的参数。
9.单击“测试数据源”按钮,测试能够连接到目标数据库,如果成功显示“SQL Server ODBC 数据源测试”对话框,在“测试结果”列表中会显示“测试成功”信息。
10.单击两次“确定”按钮,完成ODBC数据源的创建,创建成功的数据源。应用程序即可通过ODBC数据源连接到目标数据库。
3. C++如何连接ODBC
#ifdef WIN32
#include <windows.h>
#include <odbcinst.h>
#include <sqlext.h>
#else
#include <mysql.h>
#include <unistd.h>
#define SQLHANDLE static MYSQL
#endif
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
SQLHANDLE hDBEnv, hDBC;
int DB_Open(char * dbcn, char * usr, char * pwd)
{
int r;
#ifdef WIN32
r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hDBEnv);
if(r) return 0;
r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,0);
if(r) return 0;
r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, &hDBC);
if(r) return 0;
r = SQLConnect(hDBC,
(unsigned char *)dbcn, strlen(dbcn),
(unsigned char *)usr, strlen(usr),
(unsigned char *)pwd, strlen(pwd));
return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;
#else
mysql_init(&hDBC);
MYSQL * rx = mysql_real_connect(
&hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);
if(!rx) return 0;
return 1;
#endif
}//end DB_Open
int DB_Exec(char * sql)
{
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));
SQLCloseCursor(hStatement);
SQLFreeHandle(SQL_HANDLE_STMT, hStatement);
hStatement = NULL;
#else
mysql_real_query (&hDBC, sql, strlen(sql));
#endif
return 1;
}//end DB_Exec
int DB_Close(void)
{
#ifdef WIN32
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);
#else
mysql_close(&hDBC);
#endif
return 1;
}//DB_Close()
#ifndef WIN32
typedef struct tagMySQLRecordset {
MYSQL_RES * hRecord;
void * * row;
int * size;
int cols;
} MYSQLRecordset;
#endif
void DB_CleanQuery(void *hRecordset)
{
if(!hRecordset) return;
#ifdef WIN32
__try {
SQLCloseCursor(hRecordset);
SQLFreeHandle(SQL_HANDLE_STMT, hRecordset);
hRecordset = NULL;
}__finally{
return;
}//end try
#else
MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;
mysql_free_result (hRec->hRecord);
free(hRec->row); hRec->row = NULL;
free(hRec->size); hRec->size = NULL;
free(hRec); hRec = NULL;
#endif
}//end DB_CleanQuery
int DB_Next(void * hRecordset)
{
int r=0; if(!hRecordset) return 0;
#ifdef WIN32
r = SQLFetch(hRecordset);
r = r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;
if(!r) {
DB_CleanQuery(hRecordset);
}//end if
#else
MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;
MYSQL_ROW row = mysql_fetch_row (hRec->hRecord);
if(row) {
for(int i=0; i<hRec->cols; i++) {
memcpy(hRec->row[i], row[i], hRec->size[i]);
}//next i
r = 1;
}else{
DB_CleanQuery(hRecordset);
r = 0;
}//end if
#endif
return r;
}//end DB_Next
int DB_params_count(const char * fmt)
{
int i=0, j=0;
while(fmt[i]) {
if(fmt[i]=='%') j++;
i++;
}//end while
return j;
}//end DB_params_count
void * DB_Query(char *sql, const char *fmt, ...)
{
int r=0;
int cols = DB_params_count(fmt);
if(cols<1) return NULL;
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
r = SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));
r = r==SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;
if(!r) {
return NULL;
}//end if
#else
r = mysql_real_query (&hDBC, sql, strlen(sql));
if(r) return NULL;
MYSQL_RES * rec = NULL;
rec = mysql_store_result (&hDBC);
if(!rec) return NULL;
MYSQLRecordset * hStatement
= (MYSQLRecordset *)malloc(sizeof(MYSQLRecordset));
if(!hStatement) return NULL;
memset(hStatement, 0, sizeof(MYSQLRecordset));
hStatement->hRecord = rec;
hStatement->cols = cols;
hStatement->row = (void **)malloc(cols * sizeof(void *));
memset(hStatement->row, 0, cols * sizeof(void *));
hStatement->size = (int *)malloc(cols * sizeof(int));
memset(hStatement->size, 0, cols * sizeof(int));
#endif
va_list ap; va_start(ap, fmt);
void * var; char buf[32];
int i=0,j=0,k=0,sz=0; char c=0;
int len = strlen(fmt); int bad=1;
#ifdef WIN32
int col=1;
#else
int col=0;
#endif
while(fmt[i]) {
c = fmt[i++];
if(c != '%') continue;
c = fmt[i++];
var = va_arg(ap, void *);
if(c == 'd') {
#ifdef WIN32
SQLBindCol(hStatement, col, SQL_C_SLONG, var, 4,NULL);
#else
hStatement->row[col] = var;
hStatement->size[col] = sizeof(long);
#endif
col++;
continue;
}//end if
if(c == 'f') {
#ifdef WIN32
SQLBindCol(hStatement, col, SQL_C_FLOAT, var, 4,NULL);
#else
hStatement->row[col] = var;
hStatement->size[col] = sizeof(float);
#endif
col++;
continue;
}//end if
memset(buf, 0, 32); bad=1;
for(j=i-1; j<len; j++) {
c = fmt[j];
if(c>='0' && c<='9') buf[j-i+1]=c;
if(c=='s') {bad=0; k=j+1; break;}
}//next j
if(bad) return NULL;
sscanf(buf, "%d", &sz);
#ifdef WIN32
SQLBindCol(hStatement, col, SQL_C_CHAR, var, sz, NULL);
#else
hStatement->row[col] = var;
hStatement->size[col] = sz;
#endif
col++;
i = k;
}//end while
va_end(ap);
return hStatement;
}//end DB_Rec
4. 我用VC程序建立ODBC方式数据库连接,用CRecordSet关联了两个表,请问我这么向数据库中插入数据。
CDatabase类用与和数据库进行连接、断开、插入...的操作。
CRecordSet类用与在数据库中读取数据。
你想向数据库中插入数据,就用CDatabase类就可以了。
SQL语句你知道吗?就是“insert into”什么的。
例如:
CDatabase* m_Database;
//你已经和数据库连接上了是吗?没有的话先连接上。
// m_Database->OpenEx(str, CDatabase::noOdbcDialog));
// str 是数据源。
//然后就向库中插入数据吧!
CString strSQL;
strSQL.Format("//一条SQL语句,就是insert into");
m_Database->ExecuteSQL(strSQL);
//这样就OK了。
5. 请问如何配置ODBC连接远程的SQL Server数据库
这好像不是你数据库设置的问题,而是局域网的问题,你试试看,在控制面板>管理工具>本地安全策略,中启动你和对方的guest帐号,网络访问方式改为经典-本地访问 ,在拒绝从网络访问这台计计算机中删除所有的,拒绝做为服务器登陆中清空所有的,然后关闭windows防火墙,
局域网内winXP(professional)的访问是个经常困扰大家的不大不小的问题,上次说我不够详细,你现在可以按以下的方法试一下,如果不成功,也可照此方法来解决局域网中经常出现的莫名奇妙的错误!!!我也是做DBMS的,出现的很多问题,貌似数据库故障,其实不然!!
一、首先启用guest来宾帐户;
二、控制面板→管理工具→本地安全策略→本地策略→用户权利指派里,“从网络访问此计算机”中加入guest帐户,而“拒绝从网络访问这台计算机”中删除guest帐户;
三、我的电脑→工具→文件夹选项→查看→去掉“使用简单文件共享(推荐)”前的勾;
四、设置共享文件夹;
五、控制面板→管理工具→本地安全策略→本地策略→安全选项里,把“网络访问:本地帐户的共享和安全模式”设为“仅来宾-本地用户以来宾的身份验证”(可选,此项设置可去除访问时要求输入密码的对话框,也可视情况设为“经典-本地用户以自己的身份验证”);
六、右击“我的电脑”→“属性”→“计算机名”,该选项卡中有没有出现你的局域网工作组名称,如“work”等。然后单击“网络 ID”按钮,开始“网络标识向导”:单击“下一步”,选择“本机是商业网络的一部分,用它连接到其他工作着的计算机”;单击“下一步”,选择“公司使用没有域的网络”;单击“下一步”按钮,然后输入你的局域网的工作组名,如“work”,再次单击“下一步”按钮,最后单击“完成”按钮完成设置。
一般经过以上步骤,基本可以解决。如果不行,再往下看:
七、检查本地连接是否被禁用,右击“本地连接”→“启用”;
八、关闭网络防火墙;
九、检查是否启用了域,是否加入了该域并检查域设置;
十、检查是否关闭了server服务;
十一、检查本地连接IP、子网掩码、网关及DNS设置是否有误;
十二、“本地连接”→属性→常规,检查是否安装了“Microsoft网络文件和打印机共享”、“Microsoft网络客户端”以及TCP/IP协议;
十三、某些局域网游戏和软件须安装NetBEUI协议。而且网上有文章说,在小型局域网中,微软在WinXP中只支持的TCP/IP协议和NWLink IPX/SPX/NetBIOS兼容协议表现不尽如人意,在小型局域网(拥有200台左右电脑的网络)中NetBEUI是占用内存最少、速度最快的一种协议。
安装方法:
①放入Windows XP安装光盘,到“valueaddMsft et etbeui”目录下将Netnbf.inf复制C:\Windows\INF中;
②将Nbf.sys复制到C:\Windows\System32\Drivers中;
③开始→控制面板→网上邻居”→“网络连接”→“本地连接”(就是你目前使用中的局域网连接)上按右键→“属性”→“常规”→“安装”→“通讯协议”→→“添加”,此时就可以看到“NetBEUI Protocol”这一项(此项原来是没有的),选取NetBEUI之后,按确定就OK了。
十四、作为网络浏览服务器的电脑由于病毒、配置低运行慢以及死机等原因导致网络上的计算机列表得不到更新,使得某些机器有时候在网上邻居中找不到。
解决办法:最简单的办法是重启各种网络设备和电脑,或者关闭个别有上述问题的电脑上的网络浏览服务器功能,方法如下:
win2000/XP下禁用Computer Browser服务
十五、给系统打上补丁。WinXP访问网上邻居的速度较慢,这是WinXP的一个Bug,当我们打开网上邻居时,操作系统首先会从计划任务中进行查找,因此就大大影响了访问的速度,除非您已经安装了SP1补丁才不会存在这个问题。
可以手工解决这一问题。从注册表中找到“\HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace”,这里有一个名为“{D6277990-4C6A-11CF-8D87-00AA0060F5BF}”的子键,该子键指向“计划任务(Scheled Tasks)”,将它直接删除即可。
十六、先卸载网卡驱动,重启再重装;
十七、硬件问题,检查网卡、网线、集线器、路由器等,在检查之前,最好先重启一下网络设备(集线器、交换机、路由器)看能否解决;
十八、病毒(木马)原因。升级病毒库安全模式下全盘杀毒。
6. C++如何连接ODBC
private System.Data.SqlClient.SqlConnection getConnection(){
System.Data.SqlClient.SqlConnection conn=new System.Data.SqlClient.SqlConnection("server=.;uid=sa;pwd=8912737;database=ddd");
return conn;
}
public bool checkUser(string name,string pwd){
bool boo=false;
System.Data.SqlClient.SqlConnection conn=this.getConnection();
string sql=string.Format("select * from UserInfo where LoginName='{0}'",name);
System.Data.SqlClient.SqlDataAdapter adap=new System.Data.SqlClient.SqlDataAdapter(sql,conn);
System.Data.DataSet ds=new System.Data.DataSet();
adap.Fill(ds);
if(ds.Tables[0].Rows.Count!=0 && ds.Tables[0].Rows[0][2].Equals(pwd))
{
boo=true;
}
return boo;
}
private static string conn="server=.;database=数据库名字;integrated security=sspi";
这就是连接数据库的字符串
sqlconnection cn=new sqlconnection(conn);
sqlcommand cmd=new sqlcommand(sql语句,cn);
就ok了
也可以不用sqlcommand,用SqlDataAdapter
7. c语言程序通过ODBC连接Oracle数据库
参考答案: 东飞伯劳西飞燕,黄姑织女时相见。
8. 如何使用odbc连接数据库
首先安装Mysql数据库。
然后安装MySQL ODBC 驱动
将要连接的MySQL数据库文件夹复制到MySQL安装文件夹的DATE目录下,DATE下的文件名为数据库名:
1、C:Program FilesMySQLMySQL Server 5.0data
2、C:ProgramDataMySQLMySQL Server 5.1data
根据您的系统可能不能,本人WIN7系统为上面第二个目录,安装完成后,我们下一步就创建ODBC数据源,步骤如下:
一、打开控制面板——管理工具——数据源(ODBC)——文件DSN如下图:
然后系统会弹出下图窗口,在Server:中填入本机地址:127.0.0.1, Port:3306(MySQL默认端口),User:填root(默认用户名为小写root),密码填入安装时输入的密码,database:选择MySQL数据库,完成按OK这样数据源就创建成功!
然后打开Access--外部数据--导入ODBC数据库—选择导入新表或链接--然后选择刚刚创建的数据源,也可以在这里新建数据源,方法和前面一样。
然后输入密码,选择数据库按OK建立链接!
9. vc++中用odbc连接mysql数据库运行时出错
首先如果你用的是vc6的话:
1。按F5运行你的程序
2。在出错时,选择“重试”
3。按ALT+7调出“调用栈”窗口
4。双击从上往下的最近一个自己定义的函数,系统会自动把该函数所在的文件显示出来,此时程序就暂停在光标处。一般来说错误就出在这附近,你可以通过查看变量的值来确认 。
10. ODBC 连接数据库
学编程千万别用数据源,下面是纯SDK写法。看一下终身受益
首先应该导入:#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
具体操作如下:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
pConn.CreateInstance("ADODB.connection");
CString conn="Provider=microsoft.jet.oledb.4.0;data source=txl.mdb"
if(FAILED(pConn->Open((_bstr_t)conn,"","",-1)))
{
AfxMessageBox("连接失败");
return;
}
pConn->Close();
pConn.Release();
CoUninitialize();