新手编程,刚才也发了个类似的帖子。。后来回复各种看不懂,或者各种执行不了,这回当个伸手党,求各位大大给个有用的、简单点的代码回去研究学习下,谢谢:
主页面有两个textbox控件分别为UserName和PassWord,分别提供用户名和密码,后台sqlserver数据库中ATM库中有个UserID表,里面有相应的用户名ID和密码,为Uid和Pwd,请问后台代码怎么编写能够判断用户输入的用户名和密码合法,并且弹出窗口:“登录成功!”;反之弹出:“登录失败!”--多谢各位大大,希望给我的代码是可以执行的,我真的刚开始学习,如果代码出错执行不了我改都不知道怎么改。跪求黄金代码,再次感谢~~~~
主页面有两个textbox控件分别为UserName和PassWord,分别提供用户名和密码,后台sqlserver数据库中ATM库中有个UserID表,里面有相应的用户名ID和密码,为Uid和Pwd,请问后台代码怎么编写能够判断用户输入的用户名和密码合法,并且弹出窗口:“登录成功!”;反之弹出:“登录失败!”--多谢各位大大,希望给我的代码是可以执行的,我真的刚开始学习,如果代码出错执行不了我改都不知道怎么改。跪求黄金代码,再次感谢~~~~
数据库方面大概会用到sqlconnection,sqlcommand对象,其他自己尝试着去做更好
在这个过程中,需要注意创建“主键”,检查约束,以及数据类型。因为本步骤的所有的操作,都直接决定你以后的c#的设计是否能够顺利完成。
第二步:决定前台的窗体是什么样子
在这个步骤的过程中,需要注意需求,是用listView还是dataGridView。
第三步:填写后台的代码:
在这个步骤的过程中,需要根据上一步骤的窗体的设定是什么,来决定后台的代码怎么写。
listView:
1、using System.Data.sqlClient;引入sql的namespace。
2、建立连接字符串,事实上这是一个定位,定义连接的是那个服务器上的哪个数据库,以及连接的安全性什么。
string connectionString ="";(字符串通过vs的视窗窗口的服务器资源,然后测试,然后从“高级”中获取)
3、通过刚才的连接字符串,建立sql连接。
sqlconnection connection = new sqlconnection(connectionString);
4、打开sql连接:
connection.open();
5、通过字符串,存放要对数据库操作的sql语句:
对数据库的操作有且仅有4种操作:增加、删除、修改、查询。
针对这四种操作,我们需要定义不同的sql操作字符串,来满足不同的操作。
变量1=textbox.text;
变量2=rextbox.text;
string sqlAdd = string.format("insert into 表名(字段名1,字段名2)values (‘{0}’,‘{1}’)",变量1,变量2);
string sqlDel = string.format("delete from 表名 where 字段名1 = ‘{0}’",变量1);
string sqlUpdate = string.format("update 表名(字段1,字段2)set 值1,值2 where 字段n =‘{0}’",变量1);
string sqlSelect = string.format("select 字段1,字段2 from 表名 where 字段n = ‘{0}’",变量1);
前三项,因为对数据库中的数据产生影响,因此,需要使用的是command的executeNonQuary();
语法为:
//实现插入功能
sqlcommand com = new sqlcommand(sqlAdd,connection);
com.executeNonQuary();
//实现修改功能
sqlcommand com = new sqlcommand(sqlUpdate,connection);
com.executeNonQuary();
//实现删除功能
sqlcommand com = new sqlcommand(sqlDel,connection);
com.executeNonQuary();
//功能的不同取决于sql字符串的不同。
最后一项,因为是从数据库取出数据,显示到前台,因此,需要使用的是一个比较特殊的对象,叫做dataReader。
dataReader是基于sqlcommand的基础上产生的,是executeReader()的产物。
//实现查询功能
sqlcommand com = new sqlcommand(sqlselect,connection);
//注意datareader是怎样产生的,没有new关键字
sqldatareader datareader = com.executeReader();
//注意,由于datareader一次是读入一条记录,并且是对应着数据库中的每个字段,
//因此,当我们需要把数据库的内容显示到listView中的时候,需要,逐条的,逐字段的送交listView显示。
//在这里,我们使用while循环对数据库的条数进行控制,保证从第一条读到最后一条
//我们使用datareader数组,对字段进行控制。先把数据库对象的值转换成c#能识别的数据类型,然后送交给变量
string name;
int age;
while(datareader.reader())//对记录的控制
{
name = datareader["name"].toString();
age = (int)datareader["age"];
//然后,我们需要把变量的内容添加到listView当中去
//由于,listView的存储机制是存放一个目录项,在目录项中,存放子项。
//所以,我们需要先生成目录项,每一条记录对应一个目录项。
//我认为,name和age字段相比,name字段更重要,因此,我把name字段作为主项
listViewItems information = new listViewItems("name");
//tag是用来存放有用的,但是不想让用户看到的东西。如:种子(作用等同于dataGridView中隐藏的主键)
information.Tag = (int)datareader["id"];
//然后我把生成的listView的目录项添加到listView中去(许多同学会忘记这一步)
listView1.Items.Add(information);
//然后把其他项作为子项,添加到主项里
information.SubItems.AddRange(new string[]{age.toString()});
}
//注意datareader是需要关闭的。
datareader.close();
//注意connection也是要关闭的
connection.close();
dataGridView:
相对于listView,就显得简单了好多。因为可以在显示网格上直接进行修改,统一使用bulder封装,使用update方法实现增,删,改。
1、using System.Data.sqlClient;引入sql的namespace。
//在类里面建立全局变量
dataset ds = new dataset();
sqldataadapter adapter;
2、建立连接字符串,事实上这是一个定位,定义连接的是那个服务器上的哪个数据库,以及连接的安全性什么。
string connectionString ="";(字符串通过vs的视窗窗口的服务器资源,然后测试,然后从“高级”中获取)
3、通过刚才的连接字符串,建立sql连接。
sqlconnection connection = new sqlconnection(connectionString);
4、在connection的基础上,同时也要建立一个sql字符串。
这个字符串就没有之前listView那么复杂,只需要建立一个查询字符串就可以了。但是必须把主键项查询出来。
string sqlselect ="slect * from table";
5、生成dataadapter:
adapter = new sqldataadapter(sqlselect,connection);
6、使用这个adapter 将数据库中的数据填充到dataset中,生成一个表,在填充的同时,给这个表起一个名字
adapter.fill(ds,"output");
7、指定前台的dataGridView的显示内容为dataset中的output表
dataGridView1.datasource = ds.table["output"];
8、当需要对表中的记录进行改动(包括增、删、改),需要先使用sqlcommandbuilder生成,然后使用update()进行重写入
sqlcommandbuilder builder = new sqlcommandbuilder(adapter);
adapter.update(ds,"output");
总结:
使用ADO.NET访问数据库有点像盖房子,一步出错,房子就盖不起来,或者说,房子就会成为豆腐渣工程。
1、运来建筑材料,征地。(using System.Data.sqlclient;)
2、打地基。(建立数据库连接字符串,这个通常是不会后期修改的,一旦确定,会用到最后,和后面的数据库操作字符串不一样的)
3、盖1层,在地基的基础上。(在数据库连接字符串的基础上建立数据库连接)
4、盖2层,在1层的基础上。(打开连接)
5、盖3层,在2层的基础上。(注意我们要使用数据库操作字符串和数据库连接一起生成相应的command或者dataadapter)
注意:我们的sql操作字符串是可以定制的,根据用户的输入,决定sql语句的条件,通常用于查询。
6、盖4层,(前台或者中间层对后台进行的使用)
7、楼层封顶。(关闭连接)