import sqlite3 import os db_file="d:\\python\\stuInfo.sqlite" if os.path.exists(db_file): os.remove(db_file) os.makedirs(os.path.dirname(db_file),exist_ok=True) conn=sqlite3.connect('stuInfo.sqlite') cur=conn.cursor() sqlstr='''CREATE TABLE stuTAB( stoNo TEXT NO NULL, stoName TEXT NO NULL, stoScore TEXT NO NULL, stoMajor TEXT NO NULL)''' cur.execute(sqlstr) conn.commit() print("1") while True: stoNo=input("输入学号") if stoNo=="-1": break stoName=input("输入姓名") stoScore=input("成绩") stoMajor=input("专业") sqlstr='''INSERT INTO stuTAB(stoNo,stoName,stoScore,stoMajor)VALUES(stoNo,stoName,stoScore,stoMajor)''' cur.execute(sqlstr) conn.commit() print("成功")
时间: 2024-02-25 18:57:24 浏览: 28
您的代码看起来已经修正了之前的语法错误,但是还有一个问题,就是插入数据时的SQL语句中,VALUES后面的参数应该用占位符 "?" 来代替,而不是直接使用变量名。这样可以避免SQL注入攻击。
下面是修改后的代码:
```
import sqlite3
import os
db_file = "d:\\python\\stuInfo.sqlite"
if os.path.exists(db_file):
os.remove(db_file)
os.makedirs(os.path.dirname(db_file), exist_ok=True)
conn = sqlite3.connect(db_file)
cur = conn.cursor()
sqlstr = '''CREATE TABLE stuTAB(
stoNo TEXT NOT NULL,
stoName TEXT NOT NULL,
stoScore TEXT NOT NULL,
stoMajor TEXT NOT NULL)'''
cur.execute(sqlstr)
conn.commit()
print("1")
while True:
stoNo = input("输入学号")
if stoNo == "-1":
break
stoName = input("输入姓名")
stoScore = input("成绩")
stoMajor = input("专业")
sqlstr = '''INSERT INTO stuTAB(stoNo, stoName, stoScore, stoMajor)
VALUES (?, ?, ?, ?)'''
cur.execute(sqlstr, (stoNo, stoName, stoScore, stoMajor))
conn.commit()
print("成功")
conn.close()
```
请注意,本代码仅供参考。如果您的代码仍然存在问题,请提供完整的错误信息,这样我才能更好地帮助您解决问题。