这是数据库大作业,原本想的是用python和SQL,但遇到了很多错误,相对C#也很麻烦,因此换了C#。但还是先记录一下基于python时的错误,错误基本是在连接数据库时发生的。
错误集合
- 需要打开对应服务器的TCP/IP 协议,而且修改后需要重启服务器!!!
- 需要修改IPAII的TCP端口为1433,
详细操作步骤: - 需要连接服务器
- 采用Windows身份认证登陆自己电脑上的数据库时,一定要有host
python连接数据库代码
conn = pymssql.connect(host = 'localhost',server='LENOVO-PC\LOKII',database = "S-T")
以下为C#部分
呈现效果
基本布局如下,就最基本的那种窗口体。
listview效果
datagridview效果
C#代码
C#的语言风格和C挺像的,简洁规范,不会太难,很容易上手。这个系统用的的C#控件也不多,除了button和text,也就是listview和datagridview,这两个只要弄清楚最基本的规则也差不多够用了。
每个窗体就相当于一个单独的子程序,所以需要声明全局变量,从而获得老师的登录名用于成绩展示的部分。
-
声明全局变量
1.先新建一个cs文件,声明全局变量
2.在登录页将用户名保存为需要传递的字符串
3.在别的窗体使用该字符串
//1
namespace 学生成绩系统
{
class stloginname
{
public static string passData;
}
}
//2
teloginname .passData = textBox1.Text.Trim ();//保存传递的字符串
查询所教课程 myForm = new 查询所教课程 ();//构建B窗体的一个实例
//3
string tno = "";
tno = teloginname .passData;
- 数据库连接部分,这里连接的是本地数据库,所以没有设置服务器名字。若需远程连接,需确保与要连接的数据库处于同一个局域网中。
SqlConnection conn = new SqlConnection("server=;uid=sa;pwd=12345678;database=ScoreSearch");
conn.Open();
- 窗口跳转部分,从登录页面跳回开始页面(即成绩系统)。
成绩系统 f = new 成绩系统();
f.Owner = this;
this.Hide();
f.ShowDialog();
Application.ExitThread();
- 登录部分的设计,算是静态登录,不是动态。即不是给每一个登录用户在数据库里面创建一个身份,而是在表记录他们的用户名和密码。从而直接将获得的登录名、密码与表里面的进行匹配,然后直接以sa的身份登录进去。
string loginname = textBox1.Text.Trim(); //获取文本框里输入的用户名
string loginpwd = textBox2.Text.Trim();
//检查输入是否为空
if (String.IsNullOrEmpty(loginname) || String.IsNullOrEmpty(loginpwd))
{
MessageBox.Show("用户名或密码不能为空");
return;
}
//获取表里所记录的用户名和密码并进行匹配
string st1 = "select 班主任编号 from classteacher_info where (班主任编号='" + textBox1.Text + "')";
SqlCommand my1 = new SqlCommand(st1, conn);
SqlDataReader sdr = my1.ExecuteReader();
if (sdr.HasRows)
{
sdr.Close();
string st2 = "select 班主任密码 from classteacher_info where (班主任编号='" + textBox1.Text + "')";
SqlCommand my2 =