android Studio与数据库SQLserver连接实现登录
16lz
2021-01-26
主要用到:1.DBUtil 类,连接数据库的代码都在里边。
2. libs中的.jar包,着着非常重要,很多人忘记导入相应jar包导致找不到资源啥的。
3. AndroidManifest.xml中加权限
记得在AndroidManifest.xml中加入socket权限:
2,3步不懂得可以参考:https://blog.csdn.net/na2609613672/article/details/82222795
DBUtil 类代码:
package com.monitorsys.seashell.myapp;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class DBUtil{ private String name=null; private String pass=null; public DBUtil(String m,String p){ this.name=m; this.pass=p; } private static Connection getSQLConnection(String ip, String user, String pwd, String db) { Connection con = null; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ip + ":1433/" + db + ";charset=utf8", user, pwd); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return con; } public String QuerySQL() { String result = ""; try { Connection conn= getSQLConnection("数据库地址", "用户名", "密码", "数据库名");//根据自己的数据库信息填写对应的值 String sql = "select username from userinfo where userpwd=? and username=? "; PreparedStatement stat = conn.prepareStatement(sql); stat.setString(1, pass); stat.setString(2, name); ResultSet rs = stat.executeQuery(); while (rs.next()) { result= "1" ; } rs.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); result += "查询数据异常!" + e.getMessage(); } return result; } public static void main(String[] args) { }}
LoginActivity代码:
1.主要看登陆,其他都是自动生成的
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mEmailView = (AutoCompleteTextView) findViewById(R.id.email);//1.用户 populateAutoComplete();//动态获取PERMISSION_GRANTED(通讯录权限) mPasswordView = (EditText) findViewById(R.id.password);//2.密码 //setOnEditorActionListener:编辑完之后点击软键盘上的回车键才会触发 mPasswordView.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {//当用户处在输入密码编辑框,软键盘打开,输入确定按钮(EditorInfo.IME_NUL)时尝试登录 // 按下完成按钮,这里IME_ACTION_DONE和.xml中imeOptions对应 if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) { attemptLogin(); return true;//返回true,保留软键盘。false,隐藏软键盘 } return false; } });//3.登陆(看这里>>>>>>>>>> Button mEmailSignInButton = (Button) findViewById(R.id.email_sign_in_button);//找到按钮 mEmailSignInButton.setOnClickListener(this.LoginInButtonlistener);//绑定监听器 WorkThread wt=new WorkThread(); wt.start();//调动子线程//看到这就可以了>>>>>>>>> mLoginFormView = findViewById(R.id.login_form);//滑动视图 mProgressView = findViewById(R.id.login_progress);//进度条 }
2.点击登陆按钮后,触动监听器:
private View mProgressView; private View mLoginFormView; //按钮监听器 View.OnClickListener LoginInButtonlistener = new View.OnClickListener() { public void onClick(View view) { String s= mPasswordView.getText().toString();//获取页面密码 String sy=mEmailView.getText().toString();//获取页面用户名 Message m=handler.obtainMessage();//获取事件 Bundle b=new Bundle(); b.putString("pass",s);//以键值对形式放进 Bundle中 b.putString("name",sy); m.setData(b); handler.sendMessage(m);//把信息放到通道中 } };
3.信息放到通道中 ,有信息后,looper工作,调用Handler中的handleMessage
class WorkThread extends Thread{ @Override public void run(){ Looper.prepare(); handler=new Handler(){ @Override public void handleMessage(Message m){ super.handleMessage(m); Bundle b= m.getData();//得到与信息对用的Bundle String name=b.getString("name");//根据键取值 String pass=b.getString("pass"); DBUtil db=new DBUtil(name,pass);//调用数据库查询类 String ret=db.QuerySQL();//得到返回值 if (ret.equals("1"))//为1,页面跳转,登陆成功 { Intent localIntent = new Intent(); localIntent.setClass(LoginActivity.this, SelectActivity.class); LoginActivity.this.startActivity(localIntent); Toast.makeText(LoginActivity.this, "登录成功",Toast.LENGTH_SHORT).show();//显示提示框 return; } Toast.makeText(LoginActivity.this, "用户名或密码错误", Toast.LENGTH_SHORT).show(); } }; Looper.loop();//Looper循环,通道中有数据执行,无数据堵塞 } }
登录页面:
因为很多网友源码,之前的找不到了,我又重新写了一个,页面设置有一点不同但逻辑相同,希望能帮助你们呢
百度网盘:https://pan.baidu.com/s/1PCNxogsp_txrVKQjKSjGeQ
密码:egqx
注:如果你的gradle版本和我的不一样导致下载的代码不能运行,可看我另一篇代码可以解决这个问题https://blog.csdn.net/na2609613672/article/details/89086952
更多相关文章
- Android学习笔记16:Button控件图文混排效果的实现
- android之activity跳转 窗口跳转
- SDK-IOS 关于SDK接入 MAC平台笔记
- android仿ios开关按钮
- Android(安卓)ADB命令大全(通过ADB命令查看wifi密码、MAC地址、
- Android编程: 界面组成、事件监听器
- Android应用开发基础篇(1)-----Button
- Android(安卓)Design Support Library——Floating Action Butto
- android之MediaPlay播放视频