java 程序升级之mysql Invalid column name 和 思考

        对于一般的猿媛来说,升级原来的程序绝对是一件痛苦的事情,而更痛苦的是:除了一个 projcet ,其他什么都没有,就连数据库字段的描述都没有,更不用说是设计文档,数据库设计文档,需求文档等等的。

        最近大boss让对一个6年前的项目进行升级,不仅要把程序升级,界面更换,而且还要从sql server 数据库迁移到mysql 上来,可是当拿到项目的那一刻,真是头大。因为除了项目本身,其他什么都没有,而且项目开发人员早已经离职,任何文档都没有,就连各个表的字段描述都没有,只能凭借程序猿的第六感来猜测各个字段是什么意思... ...


       废话不说了,直接说问题,在修改到某一个查询时候,报错:java.sql.SQLException: Invalid column name 。第一眼一看,我靠这以前都能好好运行的项目,没有做任何的改动,怎么能这样呐,有点晕了,语句如下:

SELECT distinct s.id AS id, s.name AS name, s.url AS url,s.siteMap as siteMap,s.isFlag as isFlag, s.stat AS stat, t.id as tmpl_id, t.description as tmDescription FROM bbs_site1 s LEFT JOIN bbs_tmpl1 t ON s.tmpl_id = t.id where 1=1 

      

       自从棱角之后,谷爸算是彻底赶出了神州大地,哎,咋说呐,猿媛们不还得生活,不还得赚money吗,好歹也要想办法找到谷爸吧,不是难事,可难 的是:怎么着也没有找到我想要的答案,为啥这个语句就会报错?


       本猿百思不得其解,尝试使用索引获取,不行,使用sql的resultset 获取字符串,也不OK ,气死我了,


        好在天无绝人之路,哥哥终于找到原因了,因为程序底层使用的是rowset (继承之resultset),对于红色部分的id颇有不满,不知道取那个,它不会按照as 后边的别名来取值,之后按照id来取值,真的是很不知所以,不过,找到问题之后,解决方案也就来了。第一个使用id (rs.getInt("id")),第二个id就使用索引来取值(rs.getInt(index)),这样一切都OK 了。真的是不知道原来还有这么大的一个坑呀,受教了哦,故记录在此。


         改完之后,一想,真的是觉得以前的思路,方式欠妥,也算是给自己提点意见:

           1. 程序设计时候,字段的意思一定要给出描述,即便是不描述,也要在文档中做出明确的说明。

           2,每个字段符合通俗,易用原则,一看字段就知道是什么意思,比如name ,人有name,物品有name ,如果都定位name,就不好了,而应该界定好:per_name, pro_name  这样是否会好多了呐?

           3.文档说明,没有文档说明,让被人改动codes,真的是很犯晕。

           4. 注释,这个也是很头痛的事情,在本项目中,他没有给注释,我卡卡卡卡,一个函数写几十行,而且还是乱换行,哥真的是脾气好,不然真得发怒了。

           5,可扩展性,着点很多时候都没有考虑到,尤其是在程序升级或者是添加新功能的时候,所以这个应该是一个共性,值得好好思索。

           6.公共的,通用的方法,类,函数等的一定要提出来,千万不要遇到一次写一次,太麻烦了。


           以上这六点算是本猿提出的小小建议,确实值得思考、、、 、、、

       

           知易行难,都知道这些,再次说出来,无非是引起重视,可是究竟自己做的怎么样,那只有自己之道了。





   



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于 tkinter 和 MySQL 的增删改查操作以及一个简单的登陆系统的代码示例。需要注意的是,这里的代码只是一个简单的示例,您需要根据自己的实际情况进行调整和优化。 首先,需要安装 MySQL Connector Python,可以使用 pip 进行安装: ``` pip install mysql-connector-python ``` 下面是一个 tkinter 窗口,包含了添加、删除、修改和查询功能的示例代码: ```python import mysql.connector from tkinter import * from tkinter import messagebox # 连接 MySQL 数据库 mydb = mysql.connector.connect( host="localhost", user="root", password="password", database="mydatabase" ) # 创建 tkinter 窗口 root = Tk() root.geometry("500x500") # 添加数据 def add(): name = name_entry.get() age = age_entry.get() gender = gender_entry.get() cursor = mydb.cursor() sql = "INSERT INTO students (name, age, gender) VALUES (%s, %s, %s)" val = (name, age, gender) try: cursor.execute(sql, val) mydb.commit() messagebox.showinfo("Success", "Data added successfully") except: mydb.rollback() messagebox.showerror("Error", "Failed to add data") # 删除数据 def delete(): id = id_entry.get() cursor = mydb.cursor() sql = "DELETE FROM students WHERE id = %s" val = (id,) try: cursor.execute(sql, val) mydb.commit() messagebox.showinfo("Success", "Data deleted successfully") except: mydb.rollback() messagebox.showerror("Error", "Failed to delete data") # 更新数据 def update(): id = id_entry.get() name = name_entry.get() age = age_entry.get() gender = gender_entry.get() cursor = mydb.cursor() sql = "UPDATE students SET name = %s, age = %s, gender = %s WHERE id = %s" val = (name, age, gender, id) try: cursor.execute(sql, val) mydb.commit() messagebox.showinfo("Success", "Data updated successfully") except: mydb.rollback() messagebox.showerror("Error", "Failed to update data") # 查询数据 def search(): id = id_entry.get() cursor = mydb.cursor() sql = "SELECT * FROM students WHERE id = %s" val = (id,) cursor.execute(sql, val) result = cursor.fetchone() if result: name_entry.delete(0, END) name_entry.insert(0, result[1]) age_entry.delete(0, END) age_entry.insert(0, result[2]) gender_entry.delete(0, END) gender_entry.insert(0, result[3]) else: messagebox.showerror("Error", "Data not found") # 创建标签和输入框 id_label = Label(root, text="ID:") id_label.grid(row=0, column=0) id_entry = Entry(root) id_entry.grid(row=0, column=1) name_label = Label(root, text="Name:") name_label.grid(row=1, column=0) name_entry = Entry(root) name_entry.grid(row=1, column=1) age_label = Label(root, text="Age:") age_label.grid(row=2, column=0) age_entry = Entry(root) age_entry.grid(row=2, column=1) gender_label = Label(root, text="Gender:") gender_label.grid(row=3, column=0) gender_entry = Entry(root) gender_entry.grid(row=3, column=1) # 创建按钮 add_button = Button(root, text="Add", command=add) add_button.grid(row=4, column=0) delete_button = Button(root, text="Delete", command=delete) delete_button.grid(row=4, column=1) update_button = Button(root, text="Update", command=update) update_button.grid(row=5, column=0) search_button = Button(root, text="Search", command=search) search_button.grid(row=5, column=1) # 运行 tkinter 窗口 root.mainloop() ``` 接下来是一个简单的登陆系统的代码示例,包含了注册和登陆功能: ```python import mysql.connector from tkinter import * from tkinter import messagebox # 连接 MySQL 数据库 mydb = mysql.connector.connect( host="localhost", user="root", password="password", database="mydatabase" ) # 创建 tkinter 窗口 root = Tk() root.geometry("300x200") # 注册功能 def register(): username = username_entry.get() password = password_entry.get() cursor = mydb.cursor() sql = "INSERT INTO users (username, password) VALUES (%s, %s)" val = (username, password) try: cursor.execute(sql, val) mydb.commit() messagebox.showinfo("Success", "Registered successfully") except: mydb.rollback() messagebox.showerror("Error", "Failed to register") # 登陆功能 def login(): username = username_entry.get() password = password_entry.get() cursor = mydb.cursor() sql = "SELECT * FROM users WHERE username = %s AND password = %s" val = (username, password) cursor.execute(sql, val) result = cursor.fetchone() if result: messagebox.showinfo("Success", "Logged in successfully") else: messagebox.showerror("Error", "Invalid username or password") # 创建标签和输入框 username_label = Label(root, text="Username:") username_label.grid(row=0, column=0) username_entry = Entry(root) username_entry.grid(row=0, column=1) password_label = Label(root, text="Password:") password_label.grid(row=1, column=0) password_entry = Entry(root, show="*") password_entry.grid(row=1, column=1) # 创建按钮 register_button = Button(root, text="Register", command=register) register_button.grid(row=2, column=0) login_button = Button(root, text="Login", command=login) login_button.grid(row=2, column=1) # 运行 tkinter 窗口 root.mainloop() ``` 希望这些示例代码能够对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值