gpt4 book ai didi

java - 使用 MYSQL 插入数据但没有任何反应

转载 作者:行者123 更新时间:2023-11-30 22:14:04 24 4
gpt4 key购买 nike

我正在尝试将数据从我的应用插入到 MYSQL 数据库中。我正在使用 HttpURLConnection 打开连接并使用 BufferedWriter 写入。一切正常(没有任何异常)但不知何故没有数据被插入到表中。 (我正在学习 this 教程)。

我正在使用 AsyncTask 在后台进行网络连接。如下所示,我创建了一个从 AsyncTask 扩展而来的新类。

public class BackgroundTask extends AsyncTask<String, Void, String>
{
Context ctx;
BackgroundTask(Context ctx)
{
this.ctx = ctx;
}

这是 doInBackground 方法。

@Override
protected String doInBackground(String... strings)
{
String registerUrl = "http://localhost/APPoint/register.php";
String method = strings[0];
if (method.equals("register"))
{
try
{
String gebruikersnaam = strings[1];
String wachtwoord = strings[2];
String voornaam = strings[3];
String tussenvoegsel = strings[4];
String achternaam = strings[5];
String bedrijfsnaam = strings[6];
String email = strings[7];
String telefoonnummer = strings[8];
URL url = new URL(registerUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
OutputStream OS = conn.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(OS));
String data = URLEncoder.encode("Gebruikersnaam", "UTF-8")+ "=" + URLEncoder.encode(gebruikersnaam, "UTF-8")+"&"+
URLEncoder.encode("wachtwoord", "UTF-8")+ "=" + URLEncoder.encode(wachtwoord, "UTF-8")+"&"+
URLEncoder.encode("voornaam", "UTF-8")+ "=" + URLEncoder.encode(voornaam, "UTF-8")+"&"+
URLEncoder.encode("tussenvoegsel", "UTF-8")+ "=" + URLEncoder.encode(tussenvoegsel, "UTF-8")+"&"+
URLEncoder.encode("achternaam", "UTF-8")+ "=" + URLEncoder.encode(achternaam, "UTF-8")+"&"+
URLEncoder.encode("bedrijfsnaam", "UTF-8")+ "=" + URLEncoder.encode(bedrijfsnaam, "UTF-8")+"&"+
URLEncoder.encode("email", "UTF-8")+ "=" + URLEncoder.encode(email, "UTF-8")+"&"+
URLEncoder.encode("telefoonnummer", "UTF-8")+ "=" + URLEncoder.encode(telefoonnummer, "UTF-8");
try {
bw.write(data);
}catch(Exception e)
{
e.printStackTrace();
}
bw.flush();
InputStream inputS = conn.getInputStream();
inputS.close();
bw.close();
OS.close();

} catch (IOException e) {
e.printStackTrace();
}
return "Registreren voltooid";
}
return null;
}

我的 php 数据库连接初始化程序。

<?php

define('HOST', 'localhost');
define('USER', 'root');
define('PASS', '');
define('DB', 'appoint');

$conn = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

我的register.php文件

<?php
$username = filter_var(trim($_POST['gebruikersnaam']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$password = filter_var(trim($_POST['wachtwoord']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$voornaam = filter_var(trim($_POST['voornaam']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$tussenvoegsel = filter_var(trim($_POST['tussenvoegsel']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$achternaam = filter_var(trim($_POST['achternaam']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$bedrijfsnaam = filter_var(trim($_POST['bedrijfsnaam']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$email = filter_var(trim($_POST['email']), FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$telefoonnummer = filter_var(trim($_POST['telefoonnummer']), FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);

if ($username == '' || $password == '' || $voornaam == '' || $tussenvoegsel == '' || $achternaam == '' || $bedrijfsnaam == '' || $email == '' || $telefoonnummer == '') {
//echo 'Verplichte velden zijn niet ingevoerd!';
} else {
require_once('DBConnect.php');

$stmnt = $conn->prepare("INSERT INTO gebruikers (`gebruikersnaam`, `wachtwoord`, `voornaam`, `tussenvoegsel`, `achternaam`, `bedrijfsnaam`, `email`, `telefoonnummer`) "
. "VALUES (?, ? , ? , ?, ?, ?, ?, ?)");
try {
$stmnt->execute(array($username, $password, $voornaam, $tussenvoegsel, $achternaam, $bedrijfsnaam, $email, $telefoonnummer));
} catch (PDOException $ex) {
if ($ex->errorInfo[1] == 1062) {
echo 'duplicate entry';
} else {
var_dump($ex);
}
}
}

起初我以为我的网址是错误的。我试过使用:

"http://127.0.0.1/APPoint/register.php"
"http://localhost/APPoint/register.php"
"http://10.0.2.2/APPoint/register.php"
"http://192.168.0.1/APPoint/register.php"

似乎什么都做不了。如果有人可以提供一些意见,我们将不胜感激。

编辑 我应该提到我没有使用 AVD 来测试代码。我为此使用我自己的三星设备。

编辑为后台任务添加执行

if(!errors)
{
String method = "register";
BackgroundTask bgTask = new BackgroundTask(this);
bgTask.execute(method, gebruikersnaam, wachtwoord, voornaam, tussenvoegsel, achternaam, bedrijfsnaam, email, telefoonnummer);
finish();
}

编辑 在使用 AVD 运行时,在 logcat 上出现此错误(可能是 android 错误):getSlotFromBufferLocked: 未知缓冲区 0xb4095170谷歌搜索后,它看起来像一些关于权限的 android 错误。但是我的 list 中已经有了互联网许可。

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

最佳答案

当您调用 conn.getInputStream() 或 conn.getResponseCode() 时,请求被发送到服务器。如果你不这样做,什么也不会发生。请将这些方法之一添加到您的 doInBackground()。

关于java - 使用 MYSQL 插入数据但没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com