从零开始基于实践的使用Java操作SQL Server(给自己看的)

时间:2019-12-03 13:51:58   收藏:0   阅读:115

------------恢复内容开始------------

零基础

DAO层主要是接口,看了一个示例文件。

与Extends的区别

extends,表示对父类的继承,可以实现父类,也可以调用父类初始化 this.parent()。而且会覆盖父类定义的变量或者函数。

implements,表示对接口的实现,接口通过关键字interface 进行定义。eg:public class S implements F,在接口F中对方法进行声明,在类S中对该方法进行实现。

这两种实现的具体使用,是要看项目的实际情况,需要实现,不可以修改,用implements,只定义接口。需要具体实现,或者可以被修改,扩展性好,用extends。

 

 

找到了代码示例,只要有.project文件就可以用打开工程直接在eclipse里打开,如果缺少包或者有路径冲突,可以通过右键工程文件,点击build path 中configure build path,把无效路径删除,添加新的jar设置完以后错误会自动消除。

现在我在看上一届的例程文件,他们的能直接打开。

技术分享图片 

bin里是二进制执行文件,src里是源文件,其中的文件是在eclipse中能被点开的。

src里自己加一个db文件夹,db中再创建三个文件夹,分别是dao、entity、test

dao层是最难的,他们用了hibernate,所以dao很复杂,打算最后再学。entity是每个实体的java文件。test是所有测试文件的集合。

先写entity,可以尝试一下,不知道会不会有什么类出错的问题。

技术分享图片

 

 

 

以上内容利用的是上周四Web课上学到的关于文件夹的知识

技术分享图片

 

 

DAOFactory中有一个getStudentDAO,按道理来说就是这个类中衍生出了之后要用的所有DAO

技术分享图片

 

 

 DAOFactory的意思应该是生产出每个类要用到的DAO,从而建立封装。

老师给的例程里应该缺少了studentDAO到DAO之间的关系,经过总结,

虚线应该是implement,起始类实现目标类声明的函数(也可以说是操作)

实线应该是extend,起始类应用了目标类中的函数。

技术分享图片

 

 不知道是怎么造成的,但是BaseDAO能看出来和其他的缩进不同

BaseDAO和DAO层一样,只有声明没有定义,但是老师给的例程中DAOBase中有对连接的实现

所以我猜想DAO和BaseDAO是可以类比的,而非DAOBse和BaseDAO

这决定着我改的时候是连接DAO还是DAOBase

studentDAOImpl中放的是对StudentDAO中声明函数的实现

 

要完成实验3.7,需要:

1、补全StudentImpl中所有用到的函数,update(不太明白它的参数怎么回事,但是应该和之前的3.6有关,输入SQL语句对数据库进行修改)、delete、getstudent(这个好像是根据学号来查找学生信息的)

2、把每个xxxDAO类名前加上extends DAO

ps:之前这些操作都是针对元组(记录),或者说行来进行操作的,但是老师给的例程里出现了给数据表中添加列的操作,这个东西写在DAOFactory中,应该就是指在生成类的时候一并写进去。婧媛儿说update可以先删掉再重建,另一个方法是直接进行修改,应该会相对复杂。

3、3.7还要求写测试test文件,每个测试类的名字可以统一写成xxxtest,然后在里面使用

 

技术分享图片

 

它好像不用引用之前的类

不,它用的方式不一样,我发现它折叠了

技术分享图片

 

 它把之前那个库加载进来了(db.dao也是自己写的)

然后生成一个目标类,对每一个函数进行一次实例化的操作,观察结果是否符合预期,测试文件完成。

2019-11-26现在去睡觉,明早起来试着写一个。

 

 

 

2019.11.27

今天测试类写完了,Impl类也补全了,但是一点运行就发现有

技术分享图片

 

 the selection cannot be launched这个错,看不懂英文,我猜是说没法加载的意思,因为没有入口?

上网查了一堆,大部分都说是代码中有错误的问题,但我早就把所有小横线都消除了。我又查了一个run as configurantion是什么情况,打算自己配置,然后有一个我觉得有用的答案说没有main函数会出现这种问题。的确我在测试函数中只是定义了函数没有调用,我看了一下学姐那里拿的例程,他们的文件里没有main,但是好像用了一个我不懂的hibernate,有一堆包加载,看不懂,所以我先加了main试试。现在可以直接运行了。(有同学运行失败,他的问题是一个packet里多个类中有main,我猜这个东西对优先级有要求)

然后发现之前被我卸载的intellij不是软件本身有问题,是我电脑的网络配置有问题,上一篇提到了。所以我重新装了一遍,在这个过程中内存不够,清理了内存(自选项系统更新补丁包可以清除,因为安装已经完成),用到的激活码是(如果过期了可以在浏览器中搜索:intellij idea 2019激活码)下面这个能用到2020.06.05


K6IXATEF43-eyJsaWNlbnNlSWQiOiJLNklYQVRFRjQzIiwibGljZW5zZWVOYW1lIjoi5o6I5p2D5Luj55CG5ZWGOiBodHRwOi8vaWRlYS5oay5jbiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwiZmFsbGJhY2tEYXRlIjoiMjAxOS0wNi0wNSIsInBhaWRVcFRvIjoiMjAyMC0wNi0wNCJ9LHsiY29kZSI6IkFDIiwiZmFsbGJhY2tEYXRlIjoiMjAxOS0wNi0wNSIsInBhaWRVcFRvIjoiMjAyMC0wNi0wNCJ9LHsiY29kZSI6IkRQTiIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMDUiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMDQifSx7ImNvZGUiOiJQUyIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMDUiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMDQifSx7ImNvZGUiOiJHTyIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMDUiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMDQifSx7ImNvZGUiOiJETSIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMDUiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMDQifSx7ImNvZGUiOiJDTCIsImZhbGxiYWNrRGF0ZSI6IjIwMTktMDYtMDUiLCJwYWlkVXBUbyI6IjIwMjAtMDYtMDQifSx7ImNvZGUiOiJSUzAiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiUkMiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiUkQiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiUEMiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiUk0iLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiV1MiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiREIiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiREMiLCJmYWxsYmFja0RhdGUiOiIyMDE5LTA2LTA1IiwicGFpZFVwVG8iOiIyMDIwLTA2LTA0In0seyJjb2RlIjoiUlNVIiwiZmFsbGJhY2tEYXRlIjoiMjAxOS0wNi0wNSIsInBhaWRVcFRvIjoiMjAyMC0wNi0wNCJ9XSwiaGFzaCI6IjEzMjkyMzQwLzAiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-f8GvMiFGxAImRG8KKudyJDmZkDYD5fQiMOSFnBEMuAkeHjkq3rcj19hqQ1OS9nLCO4RvhRMINgYtKi3jVeZADAf6HKMnzDisWECB7ms8EgZoWOzTdKi3vw2pCpck5k6U6RXJmFlebIIbjA/KrzlPCPt9BfMZQ9NN5OdXDYXN9ZCvgG3vt5S0ZShPDNMQllSJt8OSerE1daj+nOP8f6WiUpgrYkHwydzF/NBlejdjvkMZp3iCk+ylKhYW5OgfnChCwWEyEmmIaNj4xYyeL3WMLqHm82Uo3bQnKkUU8eO0WOmJPfO2NGrVIeM5SEl1iu8odKX4fes5u+duTRCKjbDLAg==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcQkq+zdxlR2mmRYBPzGbUNdMN6OaXiXzxIWtMEkrJMO/5oUfQJbLLuMSMK0QHFmaI37WShyxZcfRCidwXjot4zmNBKnlyHodDij/78TmVqFl8nOeD5+07B8VEaIu7c3E1N+e1doC6wht4I4+IEmtsPAdoaj5WCQVQbrI8KeT8M9VcBIWX7fD0fhexfg3ZRt0xqwMcXGNp3DdJHiO0rCdU+Itv7EmtnSVq9jBG1usMSFvMowR25mju2JcPFp1+I4ZI+FqgR8gyG8oiNDyNEoAbsR3lOpI7grUYSvkB/xVy/VoklPCK2h0f0GJxFjnye8NT1PAywoyl7RmiAVRE/EKwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQAF8uc+YJOHHwOFcPzmbjcxNDuGoOUIP+2h1R75Lecswb7ru2LWWSUMtXVKQzChLNPn/72W0k+oI056tgiwuG7M49LXp4zQVlQnFmWU1wwGvVhq5R63Rpjx1zjGUhcXgayu7+9zMUW596Lbomsg8qVve6euqsrFicYkIIuUu4zYPndJwfe0YkS5nY72SHnNdbPhEnN8wcB2Kz+OIG0lih3yz5EqFhld03bGp222ZQCIghCTVL6QBNadGsiN/lWLl4JdR3lJkZzlpFdiHijoVRdWeSWqM4y0t23c92HXKrgppoSV18XMxrWVdoSM3nuMHwxGhFyde05OdDtLpCv+jlWf5REAHHA201pAU6bJSZINyHDUTB+Beo28rRXSwSh3OUIvYwKNVeoBY+KwOJ7WnuTCUq1meE6GkKc4D/cXmgpOyW/1SmBz3XjVIi/zprZ0zf3qH5mkphtg6ksjKgKjmx1cXfZAAX6wcDBNaCL+Ortep1Dh8xDUbqbBVNBL4jbiL3i3xsfNiyJgaZ5sX7i8tmStEpLbPwvHcByuf59qJhV/bZOl8KqJBETCDJcY6O2aqhTUy+9x93ThKs1GKrRPePrWPluud7ttlgtRveit/pcBrnQcXOl1rHq7ByB8CFAxNotRUYL9IF5n3wJOgkPojMy6jetQA5Ogc8Sm7RG6vg1yow==

 

安装以后发现这个软件的专业版功能强大,可以自己链接数据库,在右侧边栏database,点击以后展开,点+号,data sourse选SQL Server,会进入一个界面 host默认localhost,认证方式默认windows,本来网上的教程(https://www.cnblogs.com/Ran-Chen/p/9646187.html)里有database选项,我反正没看见,点了旁边的

技术分享图片

 

选了student(没选默认master),如果已经打开了连接,可以右键数据库选择“属性”重新回这个界面。

打勾的数据库会出现在右侧边栏中。

右键以后顺着把可以进行的操作看了一遍,对我有用的是打开控制台,在这里可以像在SQL Server里一样直接操作数据库(用sql语句)技术分享图片

 

 

如果操作不成功,可能是数据库打开错了,可以改这个图里圈起来的地方。据观察,如果连接上了数据库那里有个绿点。还有如果类是可以运行的,前面会有一个绿色的小箭头。

除了这个功能,还有别的,比如生成实体类,还有一个生成uml图的我没搞懂怎么用。

 

现在我打算去修改一下我的test类(16:49)

还有两个有时间想解决的问题:

1、虚拟机内存不够,从外部分配了内存以后内部还是没办法用到。

2、intellij显示中文不太正常。

技术分享图片

 

 

 

17:12改了一下能正常输出了,之前一直报错说=附近有问题,一会儿看看是什么问题。这里输出乱码是因为我变量写错了,它是statement的返回值。

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

 

学生类忘记给赋值了,还有它引用的类里那个表叫做S,不叫student

技术分享图片

 

 

ok,成功输出,列名无效我猜是我在类里写错了(我猜下面这些错应该都和sql语句有关,只要最顶上的问题处理完,下面就不出现问题)

 

20:52玩了好久,写了一个测试类,已经可以用了。

技术分享图片

 

 

在修改insert的时候出现超出索引,检查以后发现insert into S(表名)没改,然后valus(?,?,?,?,?,?)参数个数也没改,和列数不匹配(有个疑惑,为什么student表不存在它还能继续执行,并且报错超出索引。

 

右侧边栏只能显示数据库,不显示表,要改的话试了一下,点database tools 里的manage shown schemas,然后勾上dbo

技术分享图片

 

 

双击表,可以查看(卧槽这个软件这么好用我之前为什么要卸载???)

有个地方,数据库那个绿灯时间长了会灭掉,我是用属性关掉了然后重新启动的,没有使用drop因为怕直接删了,我记得数据库里使用drop删掉的。

 

printf主要是继承了C语言的printf的一些特性,可以进行格式化输出

print就是一般的标准输出,但是不换行

println和print基本没什么差别,就是最后会换行

技术分享图片

 

 

为什么这个东西输出好几遍?而且分两组,rs里到底是什么结构

或者说数据库里添加相同数据了

技术分享图片

 

 

代码没问题。

技术分享图片

 

 技术分享图片

 

 

技术分享图片

 

 偏要写uml,那我只能用ppt了

 

 

 

已经全部写完了,等我把nodejs先写完就写,hibernate的学习记录。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------恢复内容结束------------

原文:https://www.cnblogs.com/LeeBarry/p/11932929.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!