mysql驱动研究之通用数据转发器
这段时间在学习C#,要连接mysql数据库,不知道怎么连接 ,后来goole了下,发现要下载驱动,顺便看了下连接的example code
代码和java里面的差很多,之前一直在学C++ 也学过一段时间的驱动开发,一听mysql驱动,也没在意, 驱动在心里一直都是很难
并且容易造成蓝屏,数据结构复杂的代名词,也就没在意,但是后来在使用mysql.exe进行命令行登陆的时候发现此驱动非彼驱动
就决定研究下,觉得mysql.exe只是使用套接字连接了3306端口,然后发送了一些数据 然后得到了另外一些数据,因此只要得到通信的协议
就可以自己写出自己的mysql驱动 甚至是免驱动的数据库操作软件,遂拿起平日里面协议分析利器Ethernet 来监听3306端口来往的数据
包,设置filter为 tcp.port==3306 ,然后用mysql客户端登陆 ,发现根本无法得到任何数据,后来换国产的科来局域网抓包工具
同样得不到什么数据,后来
Sniffer,
Wildpackets Etherpeek 轮番上阵都抓不到任何3306端口的数据,但是办法是人想
出来的,后来自己写了一个通用的端口数据转发工具,作为中间代理只记录通信数据,数据不做处理 直接转发.
下载地址:http://download.csdn.net/source/1914921
相关文档:
package com.qll.operate;
import java.sql.*;
public class OperateUser {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String name = "root";
String password = "123456";
static Connection conn = null;
Statement st = ......
ERROR 1005 (HY000): Can't create table ' ****.frm' (errno: 150)
我是从以下几个方面解决了此问题:
1、确保参照的表和字段是存在的;
2、组成外键的字段要求被索引(主要是外键那个字段要求在其他表中是主键);
3、外键关联的两表或多表要求都是INNODB类型的表;
4、字段类型(说明)要一样`itemId` varchar( ......
MySQL的也支持存储过程,函数,触发器。
以下各个功能的详述,主要是示例。
/**1.定义分割符*/
DELIMITER //
/**2.创建函数-计算两数之和*/
CREATE FUNCTION f_sum(num1 INT,num2 INT) RETURNS INT
BEGIN
RETURN num1+num2;
END;
//
/**
*3.创建存储过程
*思路:3.1.有该存储过程则删除,3.2有使用的中间表 ......
linux
mysql
安装介绍:
linux
服务器 RedHat 5.0.server.
MySQL
版本:
下载地址链接:http://dev.mysql
.com/downloads/mysql
/5.1.html
MySQL
服务端:MySQL
-server-community-5.1.38-0.rhel5.i386.rpm
MySQL
客户端:MySQL
-client-community-5.1.38-0.rhel5.i386.rpm
1 安装步骤首先加载光驱 ......