怎样实现在程序中动态的连接数据库

怎样实现在程序中动态的连接数据库,第1张

//动态库和普通进程调用数据库方式没有任何区别,以下的程序兼容WINDOWS ODBC数据库连接和LINUX MYSQL连接,是跨平台的。

#ifdef WIN32

#include <windowsh>

#include <odbcinsth>

#include <sqlexth>

#else

#include <mysqlh>

#include <unistdh>

#define SQLHANDLE static MYSQL

#endif

#include <stdargh>

#include <stdlibh>

#include <stdioh>

#include <stringh>

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;

假设你用的是SQL数据,服务器在名为server机器上,SQL服务器用户名Sa,密码:123,表名为manager,表字段为你图上显示的五个字段(账号,姓名,姓别,年龄,****),那么你确定按扭单击事件里可以这样写(要包含命名空间using SystemDate;using SystemDataSqlClient)

{

SqlConnection SqlConn = New SqlConnection(""Data Source=server;Initial Catalog=manager;Persist Security Info=True;User ID=sa;Password=123);

string str="insert into manager(账号,姓名,姓别,年龄,****) values('"+账号textboxtext+"','"+姓名textboxtext+"','"+姓别textboxtext+"','"+年龄textboxtext+"','"+****textboxtext+"')";/注意中间的单双引号/

SqlCommand SqlCmd = New SqlCommand(str, SqlConn);

SqlConn Open();

SqlCmd ExecuteNonQuery();

SqlConn close();

}

正常的话这样就可以插入数据了

首先要拿到相应数据的JDBC驱动程序,如Oracle的就是ojdbc14jar,然后将之导入工程。

最简单的直接取连接方法:ClassforName(驱动类名):Connection

conn

=

DriverManagergetConnection(数据库url,数据库用户名,密码);

有多种方法,具体还有看你连接什么数据库,以及采用什么连接方式

我经常用的方法是用DAO连接Access

具体方法是

1、先添加DAO的引用

2、定义全局变量

public DAODatabase myDb;

DAOWorkspace myWs;

public DAORecordset myRec;

DAODBEngine de = new DAODBEngineClass();

3、自己定义一个打开数据库的函数,以便自己调用

public void OpenDb(String sql)

{

string dbStr;

dbStr = "c:\\钟山亮mdb";//数据库的路径

myWs = deWorkspaces[0];

myDb = myWsOpenDatabase(dbStr, null, null, null);

myRec = myDbOpenRecordset(sql, DAORecordsetTypeEnumdbOpenDynaset,

DAORecordsetOptionEnumdbDenyWrite,

DAOLockTypeEnumdbOptimistic);

}

4、打开数据库

string sql="select from myTb";//书写你自己的SQL语句

OpenDb(sql);

while (!myRecEOF)//遍历记录 {

myRecMoveNext();

}

myRecClose();

myDbClose();

有多种方法,具体还有看你连接什么数据库,以及采用什么连接方式

我经常用的方法是用DAO连接Access

具体方法是

1、先添加DAO的引用

2、定义全局变量

public DAODatabase myDb;

DAOWorkspace myWs;

public DAORecordset myRec;

DAODBEngine de = new DAODBEngineClass();

3、自己定义一个打开数据库的函数,以便自己调用

public void OpenDb(String sql)

{

string dbStr;

dbStr = "c:\\钟山亮mdb";//数据库的路径

myWs = deWorkspaces[0];

myDb = myWsOpenDatabase(dbStr, null, null, null);

myRec = myDbOpenRecordset(sql, DAORecordsetTypeEnumdbOpenDynaset,

DAORecordsetOptionEnumdbDenyWrite,

DAOLockTypeEnumdbOptimistic);

}

4、打开数据库

string sql="select from myTb";//书写你自己的SQL语句

OpenDb(sql);

while (!myRecEOF)//遍历记录 {

myRecMoveNext();

}

myRecClose();

myDbClose();

伏=伏=毫伏=微伏。测量电压的仪表是:电压表,它

首先要知道你使用的是什么数据库,如果是Sql server ,请先安装SQL Server2008,然后在C#中写如下代码:

using SystemDatasqlClient;

namespace SQl

{

class Program {

static void Main(string[] args)

{

//新建连接(用来连接数据库)

SqlConnection conn =

new SqlConnection("server=localhost;database=xue;user=sa;password=123");//其中database是你所要连接的数据库,user是用户名,SQL Server上的,password 也一样

connOpen();//打开连接

/

SqlCommand command = connCreateCommand();//创建执行命令的对象

commandCommandText = "INSERT INTO dboinfo (id, name) VALUES (7, 'WJBXL!')";//为对象复制(就是写SQL语句)

commandExecuteNonQuery();//执行 NoQuery就是没返回结果(就是没有结果集, 不是Select的都用这个)

/

SqlCommand cmd = connCreateCommand();//同样创建执行命令的东西

cmdCommandText = "select from dboinfo";//赋值

SqlDataReader dr = cmdExecuteReader();//执行 并 返回一个Reader(用来读结果集的)

ConsoleWrite("ID\tNAME\n");// 这我写的, 打印表头

while (drRead()) {//一直读(read方法就是看看有没有了,有了就True没了就False, 每调用一次就向下移动一次)

ConsoleWriteLine(dr[0] + "\t" + dr[1]);//dr[0]就是那个datareader读出来的第一列的值

}

connClose();//用完了以后把连接关了

ConsoleRead();

}

}

}

可以在VS2012中新建一个Windows窗口应用程序,在Form中放置DataGridView和Button两个控件,在Button的单击响应事件中连接数据库。即可。

结构化查询语言:

结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

以上就是关于怎样实现在程序中动态的连接数据库全部的内容,包括:怎样实现在程序中动态的连接数据库、在windows服务程序如何连接数据库、如何建立Java程序与SQL数据库的连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/10168139.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存