mysql相关知识

来源:互联网 发布:家用电脑做数据服务器 编辑:程序博客网 时间:2024/06/08 12:10
1.mysql无法启动可以尝试的操作
"开始"-->"运行"-->regedit-->HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services-->把mysql的对应服务那项全部删除掉 
然后在cmd窗口执行://即进入mysql安装目录下的bin目录,为了执行mysqld.exe文件  
cd D:/MySQL/MySQL Server 5.1/bin 
接着再执行: //目的是为了写入注册表
mysqld --install mysql --defaults-file="D:/MySQL/MySQL Server 5.1/my.ini" 
然后启动服务: 
net start mysql
2.mysql代码编写
2.1.mysql建表与所学的sql server 2000基本一样,例如:
create table 表名
(
一属性 int primary key auto_increment,//定义主键及自动升序排序
二属性 varchar(13),
三属性 varchar(13)
foreign key (...) references 某表(某属性)//外键定义
);
2.2.插入数据:insert into 表名  values(一属性值,二属性值,...);
2.3.分页程序:select * from 表名 order by 属性名 desc或asc limit 3,1;//表示查找降序或升序排列的第三条后面的一条数据
2.4.查询时间:select now();
2.5.自定义时间格式输出:select date_format(now(),'%Y任意符号%m 任意符号 %d %H 任意符号%i 任意符号 %s' );
2.6.查看表:desc 表名;
2.7.直接执行带有代码的文件生成表,使用\.,例如\. c:\\mysql\\mydata.sql;
3.eclipse相关联
3.1.下载lomboz,一般选择全部下载,压缩包中包含eclipse,最新版本显示database explorer与旧版本有点区别,是在data source explorer出设置,new新的connection,其中注意db路径及名称的正确,否则将导致连接数据库失败,ping error。
*3.2.jdbc编程步骤
规则基本固定例如:
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
Class.forName("mysql.jdbc.driver.OracleDriver");
//new oracle.jdbc.driver.OracleDriver();
//mysql写法
Class.forName("com.mysql.jdbc.Driver");//第一步new出驱动,路径看jar包
                        //第二步连接,ip地址+端口+SXT指对外提供的名字
conn = DriverManager.getConnection("jdbc:mysql:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
mysql的话是:
//三个参数,1.数据库的连接字符串2.用户名3.密码
   conn = DriverManager.getConnection("jdbc:mysql://localhost/mydata?user=root&password=wan");
   第三步execute the sql
stmt = conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。
String sql = "insert into dept2 values (98, 'GAME', 'BJ')";//字符串插入,用单引号 
stmt.executeUpdate(sql);//第三步
rs = stmt.executeQuery("select * from dept");//第三步;rs好比游标,指在第一条记录的上面,所以一开始要rs.next()
while(rs.next()) {//第四步查询,让游标移下一步,指向记录,用while进行遍历
   //第五步显示
System.out.println(rs.getString("deptno"));//以字符串形式拿出来
System.out.println(rs.getInt("deptno"));//以int形式拿出来
}
} catch (ClassNotFoundException e) {//大型项目最好将这些错误记录日志内,方便查找
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {//编程要规范,try-catch防止异常导致conn,stmt,rs没关闭
try {//内部关闭再写try-catch
    //第六步关闭
if(rs != null) {//后打开的先关
rs.close();
rs = null;
}
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
*3.3运用PreparedStatement可以灵活指定sql中的变量,通过如下形式输入,例如:
pstmt = conn.prepareStatement("insert into dept2 values (?, ?, ?)");//这样无需记住啥地方用单引号,啥地方不用
pstmt.setInt(1, deptno);//确定第一个问号的值,是int,值为deptno
pstmt.setString(2, dname);//deptno为整型变量,dname和loc为字符串变量
pstmt.setString(3, loc);
pstmt.executeUpdate();
3.4存储过程类CallableStatement,核心方法如下:
CallableStatement cstmt = conn.prepareCall("{call 存储过程名(?, ?, ?, ?)}");//问号表示参数
cstmt.registerOutParameter(3, Types.INTEGER);//注册第三个是输出参数,Types是输出类型参数
3.5批处理方法,例如:
stmt.addBatch("insert into 表名 values (..., '...', '...')");//stmt为Statement类型
stmt.addBatch("insert into 表名 values (..., '...', '...')");
stmt.executeBatch();//一次性提交,不需要写一次提交一次execute
*3.6Transaction,核心步骤:
3.6.1conn.setAutoCommit(false);//不让其自动提交,防止提交了一条之后出错数据不一致
3.6.2进行一系列对表操作
3.6.3stmt.executeBatch();//将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
3.6.4conn.commit();//手动提交给数据库
3.6.5conn.setAutoCommit(true);//再将自动提交改回来
3.7.滚动,例如:
Statement stmt = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,//对滚动不敏感,即你可以随意滚动
ResultSet.CONCUR_READ_ONLY);//只能够读
System.out.println(rs.isAfterLast());//是不是最后一条的下一条
System.out.println(rs.getRow());//当前是第几条记录
rs.previous();//往前一条
System.out.println(rs.getString(1));
rs.absolute(6);//直接定位到第六条
3.8.DataSource很方便实现连接池及分布式,也能拿到数据库的连接。
RowSet从ResultSet继承,接受图形化接口,支持断开结果集,支持JavaBean标准。