问题描述
我想用C#写一个登录,点登录出现Form2代码都写好了。就是按F5运行的时候输入帐号密码就卡住了。好像是连接到数据库出问题是不是要在数据库里建一个表?大概怎么建你们知道吗教教我吧很重要,还有连接的代码是什么。,谢谢了
解决方案
解决方案二:
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceWindowsFormsApplication2{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Form2form2=newForm2();stringcstring="DataSource=PC-201109192112;InitialCatalog=student;IntegratedSecurity=True";using(SqlConnectioncon=newSqlConnection(cstring)){if(textBox1.Text==""){MessageBox.Show("请输入用户名");return;}if(textBox2.Text==""){MessageBox.Show("请输入用户密码");return;}con.Open();using(SqlCommandcom=newSqlCommand("selectcount(*)frommimawherezh="+textBox1.Text+"andmm="+textBox2.Text+"",con)){//com.CommandType=CommandType.StoredProcedure//intmi=(int)com.ExecuteScalar();if((int)com.ExecuteScalar()==1){form2.ShowDialog();//this.Hide();}else{MessageBox.Show("用户名或密码无效,请重新输入");textBox1.Text=null;textBox2.Text=null;}}}}看看呀哪里错了
解决方案三:
DataSource=PC-201109192112;InitialCatalog=student;IntegratedSecurity=TruenewSqlCommand("selectcount(*)frommimawherezh=‘"+textBox1.Text+"’andmm=‘"+textBox2.Text+"’",con)连接服务器是本机,计算机名是PC-201109192112,连接数据库是student,要在这个数据库中建一张mima表,至少包括zh,mm两个字段。SQL语句中少写了单引号,因为数据库中是字符型的,要用引号引起来(SQL语句中用单引号)。
解决方案四:
引用2楼mizuho_2006的回复:
DataSource=PC-201109192112;InitialCatalog=student;IntegratedSecurity=TruenewSqlCommand("selectcount(*)frommimawherezh=‘"+textBox1.Text+"’andmm=‘"+textBox2.Text+"’",con)连接服务器是……
这一段家在哪?
解决方案五:
是你原来代码里的。。其他的逻辑判断我没细看,就看了看连接字符串和SQL语句。
解决方案六:
通常新建一个config配置文件用来保存数据库连接字符串<?xmlversion="1.0"encoding="utf-8"?><configuration><connectionStrings><addname="DB"connectionString="server=.;database=ATMDB;uid=sa;pwd=123456"/></connectionStrings></configuration>然后再建一个专门用来连接数据库的类DBHelperusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data.SqlClient;usingSystem.Configuration;usingSystem.Data;namespaceDals{publicclassDBHelper{publicstringconnstr=ConfigurationManager.ConnectionStrings["db1"].ConnectionString;privateSqlConnection_conn;publicSqlConnectionConn{get{if(_conn==null)_conn=newSqlConnection(connstr);return_conn;}}///<summary>///封装增删改操作代码///</summary>///<paramname="sql">要执行的SQL语句或者存储过程名称</param>///<paramname="type">命令类型</param>///<paramname="paras">参数数组</param>///<returns></returns>publicboolExecuteNonQuery(stringsql,CommandTypetype,paramsSqlParameter[]paras){intresult=0;try{SqlCommandcmd=newSqlCommand(sql,Conn);cmd.CommandType=type;//判断是否存在参数if(paras!=null&¶s.Length>0)cmd.Parameters.AddRange(paras);Conn.Open();result=cmd.ExecuteNonQuery();}catch{}finally{Conn.Close();}returnresult>0?true:false;}///<summary>///返回单行单列///</summary>///<paramname="sql">要执行的SQL语句或者存储过程名称</param>///<paramname="type">命令类型</param>///<paramname="paras">参数数组</param>///<returns></returns>publicobjectExecuteScale(stringsql,CommandTypetype,paramsSqlParameter[]paras){objectresult=null;try{SqlCommandcmd=newSqlCommand(sql,Conn);cmd.CommandType=type;//判断是否存在参数if(paras!=null&¶s.Length>0)cmd.Parameters.AddRange(paras);Conn.Open();result=cmd.ExecuteScalar();}catch{}finally{Conn.Close();}returnresult;}///<summary>///返回DataReader,需要注意,获取完数据后,必须关闭DataReader对象///</summary>///<paramname="sql">要执行的SQL语句或者存储过程名称</param>///<paramname="type">命令类型</param>///<paramname="paras">参数数组</param>///<returns></returns>publicSqlDataReaderExecuteDataReader(stringsql,CommandTypetype,paramsSqlParameter[]paras){SqlDataReaderread=null;try{SqlCommandcmd=newSqlCommand(sql,Conn);cmd.CommandType=type;//判断是否存在参数if(paras!=null&¶s.Length>0)cmd.Parameters.AddRange(paras);Conn.Open();//CommandBehavior.CloseConnection:关闭DataReader对象时,自动关闭相应的连接池对象read=cmd.ExecuteReader(CommandBehavior.CloseConnection);}catch{}returnread;}///<summary>///返回DataSet///</summary>///<paramname="sql">要执行的SQL语句或者存储过程名称</param>///<paramname="type">命令类型</param>///<paramname="paras">参数数组</param>///<returns></returns>publicDataSetExecuteDataSet(stringsql,CommandTypetype,paramsSqlParameter[]paras){DataSetds=newDataSet();try{SqlCommandcmd=newSqlCommand(sql,Conn);cmd.CommandType=type;//判断是否存在参数if(paras!=null&¶s.Length>0)cmd.Parameters.AddRange(paras);SqlDataAdapterda=newSqlDataAdapter(cmd);da.Fill(ds);}catch{}returnds;}///<summary>///封装带事务的增删改操作代码///</summary>///<returns></returns>publicboolExecuteNonQuery(stringsql,SqlConnectiontranconn,SqlTransactiontran,CommandTypetype,paramsSqlParameter[]paras){intresult=0;try{SqlCommandcmd=newSqlCommand(sql,tranconn);cmd.Transaction=tran;cmd.CommandType=type;//判断是否存在参数if(paras!=null&¶s.Length>0)cmd.Parameters.AddRange(paras);result=cmd.ExecuteNonQuery();}catch{}returnresult>0?true:false;}}}然后在登录的时候调用ExecuteNonQuery方法Stringsql="selectcount(*)frommimawherezh=‘"+textBox1.Text+"’andmm=‘"+textBox2.Text+"’";if(ExecuteNonQuery(sql,CommandType.Text)){MessageBox.Show("登录成功!");}else{MessageBox.Show("登录失败");}//这是我通常的用法,一般都是用三层架构的,不过在这里简化了
解决方案七:
该回复于2011-12-15 09:08:50被版主删除
解决方案八:
该回复于2011-12-15 09:11:35被版主删除
解决方案九:
附上我做的程序的OK按键事件代码:按OK键后取name和password,然后建立连接,再设SQL语句,查询取值,有结果则打开下一窗口privatevoidbtOK_Click(objectsender,EventArgse){//GetUsernameandPasswordfromtextboxinputstringclientName=txUserName.Text.Trim();clientPassword=txPWD.Text.Trim();//StartSQLConnectiontry{//SQLconnectionparameterstringstrConn="server=228.66.48.222,1433;userid="+strUserName+";PWD="+strPWD+";Database=Files";SqlConnectionsc=newSqlConnection();//createSQLconnectionobjectsc.ConnectionString=strConn;sc.Open();//Openconnection//TostoreSQLSelectcommandstringtempCommand="select*fromCUToolwhereUserName='"+clientName+"'andPassword='"+clientPassword+"'";SqlCommandsd=newSqlCommand(tempCommand,sc);SqlDataReadersdr=sd.ExecuteReader();if(sdr.Read()){frm.Close();//opensecondform"MainTool"MainToolmainfrm=newMainTool();mainfrm.StartPosition=FormStartPosition.CenterScreen;mainfrm.ShowDialog();//this.Hide();sc.Close();}else{sc.Close();MessageBox.Show("Invalidusername/passwordcombination.");}}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());return;}}
解决方案十:
学习了!5楼代码太长。
解决方案十一:
链接数据库,根据输入的用户名秘密到库中检验
解决方案十二:
该回复于2011-12-15 09:12:43被版主删除