Android问题:使用jdbc向MySQL数据库插入记录

Android问题:使用jdbc向MySQL数据库插入记录,第1张

package com.example.MyClass

import java.sql.Connection

import java.sql.DriverManager

import java.sql.PreparedStatement

import java.sql.ResultSet

import java.sql.SQLException

//新建一个java类把公有的东西都抽出来,方便扩展节省代码。==20130120又练习的。

public class MyJdbc {

// 拿到连接的对象。

public Connection getConnection() {

// String driver =

// "com.mysql.jdbc.Driver"//因为现在不需要forClass映射驱动了,所以这个也可不要了。

String url = "jdbc:mysql://localhost:3306/mysql0120"// 数据库名mysql0120

String user = "root"// 数据库登陆用户

String password = "root2"// 数据库登陆密码

Connection con = null

try {

con = DriverManager.getConnection(url, user, password)// 那四句加这句就行了。

} catch (SQLException e) {

e.printStackTrace()

}

return con// 调这个方法就返回一个连接

}

// insert delete update===========-=-==增加,删除,更改都用这个通用方法=================

// 直接把sql语句和需要的参数(因为多个,所以用数组存)传过来。

public int update(String sql, Object[] parms) {

int row = 0

Connection con = this.getConnection()

PreparedStatement ps = null

try {

ps = con.prepareStatement(sql)

if (parms != null) {

for (int i = 0i <parms.lengthi++) {

ps.setObject(i + 1, parms[i])// 注意是i+1【从第一行算的】

}

}

row = ps.executeUpdate()// 返回影响的行数

} catch (SQLException e) {

e.printStackTrace()

} finally {

this.closeAll(con, ps, null)// 这不是查询【所以结果集是null】。

}

return row

}

// 所有关闭也是一样的,所以通用这个关闭方法。===-==========关闭==========

public void closeAll(Connection con, PreparedStatement ps, ResultSet rs) {

try {

if (rs != null)

rs.close()

if (ps != null)

ps.close()

if (con != null)

con.close()

} catch (SQLException e) {

e.printStackTrace()

}

}

}

如何连接android和php mysql数据库

我们先来看一个简单的Android app例子(这里是一个商品存货清单项目),在Android程序中,我们可以访问(call)PHP脚本来执行简单的CRUD *** 作(创建,读取,更新,删除)。为了使你对它的体系结构有一个大概的了解,这里先说一下它是怎么工作的。首先你的Android项目访问(call)PHP脚本来执行一条数据 *** 作,我们称它为“创建”。然后PHP脚本连接MySQL数据库来执行这个 *** 作。这样,数据从Android程序流向PHP脚本,最终存储在MySQL数据库中。

好了,让我们来深入的看一下。

请注意:这里提供的代码只是为了使你能简单的连接Android项目和PHP,MySQL。你不能把它作为一个标准或者安全编程实践。在生产环境中,理想情况下你需要避免使用任何可能造成潜在注入漏洞的代码(比如MYSQL注入)。MYSQL注入是一个很大的话题,不可能用单独的一篇文章来说清楚,并且它也不在本文讨论的范围内,所以本文不以讨论。

1. 什么是WAMP Server

WAMP是Windows,Apache,MySQL和PHP,Perl,Python的简称。WAMP是一个一键安装的软件,它为开发PHP,MySQL Web应用程序提供一个环境。安装这款软件你相当于安装了Apache,MySQL和PHP。或者,你也可以使用XAMP。

2. 安装和使用WAMP Server

你可以从http://www.wampserver.com/en/下载WAMP,安装完成之后,可以从开始->所有程序->WampServer->StartWampServer运行该程序。

在浏览器中输入http://localhost/来测试你的服务器是否安装成功。同样的,也可以打开http://localhost/phpmyadmin来检验phpmyadmin是否安装成功。

3. 创建和运行PHP项目

现在,你已经有一个能开发PHP和MYSQL项目的环境了。打开安装WAMP Server的文件夹(在我的电脑中,是C:\wamp\),打开www文件夹,为你的项目创建一个新的文件夹。你必须把项目中所有的文件放到这个文件夹中。

新建一个名为android_connect的文件夹,并新建一个php文件,命名为test.php,尝试输入一些简单的php代码(如下所示)。输入下面的代码后,打开http://localhost/android_connect/test.php,你会在浏览器中看到“Welcome,I am connecting Android to PHP,MySQL”(如果没有正确输入,请检查WAMP配置是否正确)

test.php

4. 打开MainScreenActivity.java为main_screen.xml文件里的两个按钮添加点击事件

MainScreenActivity.java

7. 添加一个新产品(写入)

创建一个新的view和activity来向MySQL数据库添加新产品。

新建一个简单的表单,创建提供输入产品名称,价格和描述的EditText

add_product.xml

8. 新建一个Activity来处理向MySQL数据库插入新产品。

新建名为NewProductActivity.java的文件,输入以下代码。在下面的代码中

首先,从EditText获得用户输入的产品数据,格式化成基本参数格式

然后,向create_product.php发送请求,通过HTTP POST创建一个新的产品

最后,从create_product.php获取json返回值,如果success值为1,新得到的列表中就加入了新增的产品。

NewProductActivity.java

11. JSONParser类

我用一个JSONParser类从URL获得JSON格式的数据。这个类支持两种http请求,GET和POST方法从URL获取JSON数据

JSONParser.java

packagecom.example.androidhiveimportjava.io.BufferedReaderimportjava.io.IOExceptionimportjava.io.InputStreamimportjava.io.InputStreamReaderimportjava.io.UnsupportedEncodingExceptionimportjava.util.Listimportorg.apache.http.HttpEntityimportorg.apache.http.HttpResponseimportorg.apache.http.NameValuePairimportorg.apache.http.client.ClientProtocolExceptionimportorg.apache.http.client.entity.UrlEncodedFormEntityimportorg.apache.http.client.methods.HttpGetimportorg.apache.http.client.methods.HttpPostimportorg.apache.http.client.utils.URLEncodedUtilsimportorg.apache.http.impl.client.DefaultHttpClientimportorg.json.JSONExceptionimportorg.json.JSONObjectimportandroid.util.LogpublicclassJSONParser { staticInputStream is = nullstaticJSONObject jObj = nullstaticString json = ""// constructor publicJSONParser() { } // function get json from url // by making HTTP POST or GET mehtod publicJSONObject makeHttpRequest(String url, String method, List<NameValuePair>params) { // Making HTTP request try{ // check for request method if(method == "POST"){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = newDefaultHttpClient()HttpPost httpPost = newHttpPost(url)httpPost.setEntity(newUrlEncodedFormEntity(params))HttpResponse httpResponse = httpClient.execute(httpPost)HttpEntity httpEntity = httpResponse.getEntity()is = httpEntity.getContent()}elseif(method == "GET"){ // request method is GET DefaultHttpClient httpClient = newDefaultHttpClient()String paramString = URLEncodedUtils.format(params, "utf-8")url += "?"+ paramStringHttpGet httpGet = newHttpGet(url)HttpResponse httpResponse = httpClient.execute(httpGet)HttpEntity httpEntity = httpResponse.getEntity()is = httpEntity.getContent()} } catch(UnsupportedEncodingException e) { e.printStackTrace()} catch(ClientProtocolException e) { e.printStackTrace()} catch(IOException e) { e.printStackTrace()} try{ BufferedReader reader = newBufferedReader(newInputStreamReader( is, "iso-8859-1"), 8)StringBuilder sb = newStringBuilder()String line = nullwhile((line = reader.readLine()) != null) { sb.append(line + "\n")} is.close()json = sb.toString()} catch(Exception e) { Log.e("Buffer Error", "Error converting result "+ e.toString())} // try parse the string to a JSON object try{ jObj = newJSONObject(json)} catch(JSONException e) { Log.e("JSON Parser", "Error parsing data "+ e.toString())} // return JSON String returnjObj} }

到这里,本教程就结束了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9391359.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存