- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在开发一个 android 应用程序,我必须将 android 应用程序与 SQL 服务器数据库连接起来,以便使用用户名和密码对用户进行身份验证。我使用了 jtds 库来提供与 android 的 Sql 连接。下面是我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText username,password;
CheckBox mCbShowPwd;
Connection con;
String un,pass,db,ip,in;
TextView t;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
username = (EditText) findViewById(R.id.username_edtext);
password = (EditText) findViewById(R.id.passwd_edtext);
mCbShowPwd = (CheckBox) findViewById(R.id.cbShowPwd);
t = (TextView) findViewById(R.id.text);
final Button forget_btn = (Button) findViewById(R.id.forget_btn);
forget_btn.setOnClickListener(this);
final Button login_btn = (Button) findViewById(R.id.login_button);
login_btn.setOnClickListener(this);
ip = "172.16.0.**";
in="********";
db = "*******";
un = "****";
pass = "****";
mCbShowPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is changed from uncheck to checked.
if (!isChecked) {
password.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());}
}
});
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.forget_btn:
{
Intent intent=new Intent("com.example.pc.uowv1.ForgetPassActivity");
startActivity(intent);
break;
}
case R.id.login_button:
{
CheckLogin checkLogin = new CheckLogin();// this is the Asynctask, which is used to process in background to reduce load on app process
checkLogin.execute("");
break;
}
}
}
public class CheckLogin extends AsyncTask<String,String,String>
{
String z = "";
Boolean isSuccess = false;
String usernam = username.getText().toString();
String passwordd = password.getText().toString();
@Override
protected void onPreExecute()
{
//progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(String r)
{
Toast.makeText(MainActivity.this, r, Toast.LENGTH_SHORT).show();
if(isSuccess)
{
Toast.makeText(MainActivity.this , "Login Successfull" , Toast.LENGTH_SHORT).show();
}
}
@Override
protected String doInBackground(String... params)
{
if(usernam.trim().equals("")|| passwordd.trim().equals(""))
z = "Please enter Username and Password";
else
{
try
{
con = connectionclass(un, pass, db, ip,in);
if (con == null)
{
z = "Check Your Internet Access!";
}
else
{
String query = "select * from Login where username= '" + usernam.toString() +"'and password='"+passwordd.toString()+"'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs.next())
{
//mApp.setmGuser(usernam);
z = "Login successful";
isSuccess=true;
con.close();
Intent intent=new Intent(MainActivity.this,MAin2Activity.class);
intent.putExtra("username",usernam.toString());
startActivity(intent);
}
else
{
z = "Invalid Username and password!";
isSuccess = false;
}
}
}
catch (Exception ex)
{
isSuccess = false;
z = ex.getMessage();
}
}
return z;
}
}
@SuppressLint("NewApi")
public Connection connectionclass(String user, String password, String database, String server,String instance)
{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
Connection connection = null;
String ConnectionURL = null;
try
{
Class.forName("net.sourceforge.jtds.jdbc.Driver");
ConnectionURL = "jdbc:jtds:sqlserver://" + server + "/"+ database+";instance=" + instance + ";user=" + user+ ";password=" + password + ";";
connection = DriverManager.getConnection(ConnectionURL);
}
catch (SQLException se)
{
Log.e("error here 1 : ", se.getMessage());
t.setText(se.getMessage());
}
catch (ClassNotFoundException e)
{
Log.e("error here 2 : ", e.getMessage());
t.setText(e.getMessage());
}
catch (Exception e)
{
Log.e("error here 3 : ", e.getMessage());
t.setText(e.getMessage());
}
return connection;
}
}
代码在同一个网络上工作,但是当我连接到我的 android 设备中的其他网络时,它会抛出
Exception E/error here 1 :: Network error IOException: failed to
connect to /172.16.0.** (port 1433): connect failed: ETIMEDOUT
(Connection timed out).
最佳答案
恕我直言,您选择了错误的方式。不要使用从 Android 到 SQL 服务器的连接。有必要在 SQL 服务器端创建一个 Web 服务,并从 Android 使用该 Web 服务。 JDBC 驱动程序不适用于移动网络。
关于java.sql.SQLException : Network error IOException: failed to connect ETIMEDOUT 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43061357/
我正在尝试使用 PHP、mySQL 和本地主机构建 Android 登录应用程序。但是它显示连接问题。我尝试了模拟器和 Android 设备。我还通过在 Wireless LAN Adapter Wi
我正在尝试在 Windows 10 上使用 heroku run bash。 我试过允许端口 5000 通过防火墙并以管理员身份重新启动命令提示符。 还有什么我缺少的连接吗? 最佳答案 可以从 her
如何使用 nock ( https://github.com/node-nock/nock ) 和 request 强制执行 ETIMEDOUT? 我尝试了以下方法,其中 nock 会延迟响应 800
我正在尝试部署或删除甚至检查我部署的应用程序的日志 homlia-cc.meteor.com 但我收到这个错误 Error deploying application: Connection erro
以下代码是一个项目,它解析 CSV 文件的目录以输入到 MySQL 数据库中。它通常有效,但是我受到 ETIMEDOUT 错误的困扰。我是一名初级开发人员,不确定如何处理这种情况,或者为什么会发生这种
我正在尝试使用 pthread_cond_timedwait 来等待超时,类似于 Java 的 wait(long timeout, int nanos)。我知道 Java 的 wait 使用相对超时
我使用omniOrb 和Python 构建了一个CORBA 事件服务客户端。我在使用 Java 客户端时遇到了同样的问题。我非常确定我遇到了与这篇文章相同的事情,因为我的 strace 看起来非常相似
我正在尝试使用 Node 和 Mysql,但在尝试连接数据库时总是遇到错误。 //For mysql server var mysql = require('mysql'); var connect
如何处理此调用的 etimedout 错误? var remotePath = "myremoteurltocopy" var localStream = fs.createWriteStream
我创建了一个 Apache Cordova 项目并尝试按原样构建它。 Visual Studio 一直在同一步骤上失败: 1>------ Build started: Project: Test,
我在 MySql 中使用 Loopback。我在运行时随机出现以下错误 nodemon . 或 node . Web server listening at: http://0.0.0.0:3000
我正在尝试获取 200 状态代码作为响应,但结果是 ETIMEDOUT。我不明白,我怎么可能通过 postman 获取成功的响应,但同样通过 node-fetch 始终以 ETIMEDOUT 响应。这
我为 iOS 编写应用程序,它使用 Socket.IO。有时我的服务器 JS 脚本会出现以下错误: events.js:85 throw er; // Unhandled 'error'
我正在尝试运行演示程序。 根据说明,我必须运行命令npm install,该命令安装所有依赖项,但面临如下问题 最佳答案 尝试以下命令,它将注册表的协议(protocol)从 https 更改为 ht
概述 在两个单独的 Azure 实例上,第一个实例上的 Node.js 服务器正在运行,它们连接到第二个实例上运行的单 Node Redis 服务器,并且 Node.js 正在尝试与 Redis 保持
当我运行 index.js. 起初我以为这是因为我在调用 onEachLimitItem 回调之前没有包含 return。所以我根据 async multiple callbacks document
对于 TCP 客户端 connect() 调用 TCP 服务器.. 理查德·史蒂文斯 (Richard Stevens) 的 UNIX® Network Programming 一书说了以下内容..
我们在 Aws Lambda 中使用 Sequelize 并且在大多数情况下一切正常,但随机出现以下错误: ETIMEDOUT {"name":"SequelizeConnectionError","
我尝试使用this Meteor 1.3.2.4 中的 NPM 包。它在函数中使用 eventemitter 并具有异步回调。我尝试使用基于 this guide article 的 Meteor.b
我开发了一个与 FTP 服务器交互的 Node.js/Express.js 应用程序,问题是如果服务器离线,应用程序就会崩溃,因为我找不到处理 ETIMEDOUT 异常的方法。顺便说一下,我用于 FT
我是一名优秀的程序员,十分优秀!