数据库平时错误和使用经验的总结

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 数据库平时错误和使用经验的总结

jdbc里面的操作


jdbc,使用PreparedStatement

view sourceprint?001 package com.iflytek.test;  



002    



003 import java.sql.Connection;  



004 import java.sql.DriverManager;  



005 import java.sql.PreparedStatement;  



006 import java.sql.ResultSet;  



007 import java.sql.ResultSetMetaData;  



008 import java.sql.SQLException;  



009 import java.util.ArrayList;  



010 import java.util.HashMap;  



011 import java.util.List;  



012 import java.util.Map;  



013    



014 public class ConnectionDB2 {  



015    



016     /**  



017      * 驱动包  



018      */



019     private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  



020        



021     /**  



022      * 数据库地址  



023      */



024     private final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=Test";  



025        



026     /**  



027      * 用户名  



028      */



029     private final String USER = "sa";  



030        



031     /**  



032      * 密码  



033      */



034     private final String PASSWORD = "0";  



035        



036     /**  



037      * 数据库连接  



038      */



039     Connection conn;  



040        



041     /**  



042      * SQL命令  



043      */



044     PreparedStatement pst;  



045        



046     /**  



047      * 结果集  



048      */



049     ResultSet rs;  



050        



051        



052     /**  



053      * 加载数据库驱动  



054      */



055     static{  



056         try {  



057             //加载驱动  



058             Class.forName(DRIVER);  



059         } catch (Exception e) {  



060             e.printStackTrace();  



061             System.out.println("加载驱动失败");  



062         }  



063     }  



064        



065        



066     /**  



067      * 取得和数据库的连接  



068      * @return Connection  



069      */



070     private Connection getConnection() {  



071         try {  



072             conn = DriverManager.getConnection(URL, USER, PASSWORD);  



073         } catch (Exception e) {  



074             e.printStackTrace();  



075             System.out.println("连接数据库失败");  



076         }  



077         return conn;  



078     }  



079        



080        



081     /**  



082      * 查询数据库  



083      * @param sql SQL语句  



084      * @param arrays 参数数组  



085      * @return 参数列表  



086      */



087     public List getDataBySql(String sql,Object arrays[]) {  



088            



089         List list = new ArrayList();  



090            



091         try {  



092             //取得连接  



093             conn = this.getConnection();  



094                



095             if(conn == null) {  



096                 return list;  



097             }  



098                



099             //用sql语句对数据库进行操作  



100             pst  =conn.prepareStatement(sql);  



101                



102             //设置参数  



103             for (int i = 0; i < arrays.length; i++) {  



104                 pst.setObject(i+1, arrays[i]);  



105             }  



106                



107             //将查询结果放入结果集rs中  



108             rs = pst.executeQuery();  



109                



110             //遍历rs,并将rs的内容放入List中  



111             while(rs.next()) {  



112                    



113                 // 获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象  



114                 ResultSetMetaData rm = pst.getMetaData();  



115                    



116                 Map map = new HashMap();  



117                    



118                 for (int i = 1; i <=rm.getColumnCount(); i++) {  



119                     //往map里放入列名和对应的值  



120                     map.put(rm.getColumnName(i), rs.getObject(i));  



121                 }  



122                 //将map放入list中  



123                 list.add(map);  



124             }  



125         } catch (Exception e) {  



126             e.printStackTrace();  



127         } finally {  



128             close();  



129         }  



130         return list;  



131     }  



132        



133        



134     /**  



135      * 插入、删除、更新操作  



136      * @param sql SQL语句  



137      * @param arrays 参数数组  



138      * @return 影响的行数  



139      */



140     public int updateBySql(String sql,Object arrays[]) {  



141            



142         List list = new ArrayList();  



143            



144         //初始化影响的行数  



145         int line = 0;  



146         try {  



147             conn = this.getConnection();  



148                



149             if(conn == null) {  



150                 return 0;  



151             }  



152                



153             pst  =conn.prepareStatement(sql);  



154                



155             //设置参数  



156             for (int i = 0; i < arrays.length; i++) {  



157                 pst.setObject(i+1, arrays[i]);  



158             }  



159                



160             //操作数据库,返回行数  



161             line = pst.executeUpdate();  



162                



163         } catch (SQLException e) {  



164             e.printStackTrace();  



165         } finally {  



166             close();  



167         }  



168         return line;  



169     }  



170        



171        



172        



173     /**  



174      * 关闭数据库连接  



175      */



176     public void close() {  



177         try {  



178             if(rs != null){  



179                 rs.close();  



180             }  



181                



182             if(pst != null){  



183                 pst.close();  



184             }  



185                



186             if(conn != null){  



187                 conn.close();  



188             }  



189         } catch (Exception e) {  



190             e.printStackTrace();  



191             System.out.println("关闭连接出错");  



192             System.exit(0);  



193         }  



194     }  



195        



196 }  



197    



198    



199    



200    



201 package com.iflytek.test;  



202    



203 import java.util.*;  



204    



205 public class TestConnectionDB2 {  



206    



207     /**  



208      * 测试ConnectionDB2类  



209      * @param args  



210      */



211     public static void main(String[] args) {  



212            



213         TestConnectionDB2 Testdb2 = new TestConnectionDB2();  



214            



215         /**  



216          * 查询操作  



217          */



218         Testdb2.select();  



219            



220         /**  



221          * 增、删、改操作  



222          */



223         Testdb2.update();  



224    



225     }  



226        



227        



228     public void select() {  



229         //创建一个ConnectionDB2的对象  



230         ConnectionDB2 db2 = new ConnectionDB2();  



231            



232         //写一条SQL语句  



233         String sql = "select id,name,address from Student where id=?";  



234            



235         //创建一个和SQL语句匹配的参数数组  



236         Object[] arrays = {5};  



237            



238         //调用db2的“查询数据库”方法,返回List  



239         List list = db2.getDataBySql(sql, arrays);  



240    



241         //遍历list,并打印出结果  



242         for (Object object : list) {  



243             //list里放的是Map  



244             Map map = (Map) object;  



245                



246             Iterator it = map.keySet().iterator();  



247                



248             while(it.hasNext()) {  



249                 //要查询的字段名(列名)  



250                 String key = (String) it.next();  



251                    



252                 //该列对应的值  



253                 Object value = map.get(key);  



254                    



255                 System.out.print("column:"+key+"  value:"+value);  



256                 System.out.println();  



257             }  



258         }  



259     }  



260        



261        



262     public void update() {  



263         //创建一个ConnectionDB2的对象  



264         ConnectionDB2 db2 = new ConnectionDB2();  



265            



266         //写一条SQL语句  



267         String sql = "insert into People values(?,?,?)";  



268            



269         //创建一个和SQL语句匹配的参数数组  



270         Object arrays[] = {7,"毛泽东",78};  



271            



272         //调用db2的“更新数据库”方法,返回影响的行数  



273         int line = db2.updateBySql(sql, arrays);  



274            



275         //line大于0则更新成功  



276         if(line > 0){  



277             System.out.println("更新成功");  



278         } else {  



279             System.out.println("更新失败");  



280         }  



281     }  



282    



283 }




mysql使用经验



1.比如分页

select * from table limit 6

和select * from table limit 0,6  等价



select * from table limit 5,10;

一般前面的5放的是 漂移 后面的10放的是 一页多少行

拿到数据库 table里面的数据是 第6条到15条



42.121.56.21



sqlserver里面序列的用法



/****** Script for SelectTopNRows command from SSMS  ******/

SELECT TOP 1000 [id]

     ,[username]

     ,[password]

     ,[telephone]

 FROM [MyWeb].[dbo].[adminusers]

 /****** Script for SelectTopNRows command from SSMS  ******/

SELECT TOP 1000 [id]

     ,[username]

     ,[password]

     ,[telephone]

 FROM [MyWeb].[dbo].[adminusers]

 create squences a;

 USE MyWeb ;

 create sequence userid;



 USE AdventureWorks2012

 insert  ibto [MyWeb].[dbo].[adminusers] values(NEXT VALUE FOR userid,'chenyu','123','13212617498');



 CREATE SCHEMA Test1;

 CREATE SEQUENCE Test1.CountBy2

   START WITH 1

   INCREMENT BY 1 ;

 GO

 SELECT NEXT VALUE FOR Test1.CountBy2 AS FirstUse;

 SELECT NEXT VALUE FOR Test.CountBy1 AS SecondUse;

 INSERT [MyWeb].[dbo].[adminusers](id,username,password,telephone)

   VALUES (NEXT VALUE FOR Test.CountBy1,'chenxuan','123','13212617498') ;

commit;



INSERT [MyWeb].[dbo].[adminusers] (id,username,password,telephone)VALUES (NEXT VALUE FOR Test1.CountBy2,'biyu','123','123456789')  


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
SQL 存储 Oracle
Flyway数据库脚本管理工具使用经验
在常见的敏捷开发过程中,迭代的更新频繁出现,每个迭代数据库脚本也经常会更新,为了更好地管理项目中的数据库脚本,下面为大家介绍一款数据库脚本管理工具Flyway,希望对大家有帮助!
1282 1
Flyway数据库脚本管理工具使用经验
|
SQL 存储 Oracle
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
平时做开发需要掌握哪些数据库方面的知识(个人经验之谈)
238 0
|
算法 数据库 数据安全/隐私保护
md5加密科普,关于平时数据库密码的保存
md5加密科普,关于平时数据库密码的保存
md5加密科普,关于平时数据库密码的保存
|
关系型数据库 MySQL 测试技术
软件测试mysql面试题:数据库增删改查?平时使用场景?
软件测试mysql面试题:数据库增删改查?平时使用场景?
168 0
|
Oracle 关系型数据库 BI
农夫山泉CIO分享SAP HANA数据库实施经验
【TechTarget中国原创】还记得那句经典的广告词吗?农夫山泉,有点甜。这家位于杭州的饮用水制造商成立至今仅有十几年的时间,虽然历史不比可口可乐这样的跨国企业,但是作为国内快速消费品行业中增长速度较快的公司,农夫山泉在管理方面有它的独到之处。
1723 0
|
监控 关系型数据库 MySQL
第一次操刀数据库分表的教训与经验--白干一场
做完了分表之后,数据库里面的表从8张变成了8000张,我以为谷歌的抓取速度会降低为原来的一半,于是每天看一次谷歌抓取速度,结果实在是太失望了 结果发现,分完表之后谷歌抓取等待的时间迅速上升了,对mysql不是很了解,查了一下mysql的一些配置信息,我的数据库默认是innodb, 结果发现i...
935 0
|
SQL 关系型数据库 MySQL
第一次操刀数据库分表的教训与经验
给数据库分表,曾经是个离我很遥远的事情,入行这几年参与过别人主导的分表、分库工作,自己从未操刀,直到我自己的垃圾小站主表10多万记录,相关的其他表30~40万,孱弱的服务器面对谷歌和百度的抓取,导致下载一个页面的时间非常长(PS:谷歌的蜘蛛是我小站的主要用户)。
1204 0
|
14天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
29 1
|
16天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
30 4
|
23天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
117 1
下一篇
无影云桌面