
//动态库和普通进程调用数据库方式没有任何区别,以下的程序兼容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数据库的连接等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)