android通过http访问mysql或者sqlserver,oracle数据库

本文详细对比了表单提交中GET与POST两种方式的区别,包括数据传输方式、数据大小限制及安全性等方面,并提供了Java代码示例。

表单提交中get和post方式的区别有5点
1.get是从服务器上获取数据,post是向服务器传送数据。
2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
4.get 传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
5.get安全性非常低,post安全性较高。

 

看到网上很多童鞋都在问这个东东,我就发上来算了,哥都搞EE了,算了,为了方便大家还是给发布一下:

 

package com.shuangchuan;

 

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

 

import org.apache.http.HttpResponse;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

 

public class MyData {

 

         public void post(String []str){

                   /**

                     * 使用httpclent

                     * 直接通过HTTP协议提交数据到服务器,实现如下面表单提交功能:

 

                     * @paramactionUrl 上传路径(注:避免使用localhost127.0.0.1这样的路径测试,由于它会指向手机模拟器,

 

                     * 你可以使用 itcast.cn 192.168.1.10:8080这样的路径测试)

 

                     *@paramparams 请求参数 key为参数名,value为参数值

 

                     *@paramfile 上传文件

 

                     **/

                   try {

                            String s="http://192.168.1.105:8080/yingyong/servlet/accessData";

                            s=s+"?name=wei";

                            URL url=new URL(s);

                            HttpURLConnection con=(HttpURLConnection )url.openConnection();

 

                            con.setConnectTimeout(5*1000);//设置超时时间

                            con.setDoInput(true);//答应输进

                            con.setDoOutput(true);//答应输出

                            con.setUseCaches(false);//不使用Cache

                            con.setRequestMethod("POST");

                            con.setRequestProperty("Charaset", "UTF-8");

                           

                           

                            StringBuilder sb=new StringBuilder();

                            sb.append("--start".getBytes());

                            sb.append(str[0]);

                            sb.append(str[1]);

                            sb.append(str[2]);

                           

                            DataOutputStream out=new DataOutputStream(con.getOutputStream());

                            out.write(sb.toString().getBytes());

                           

                            out.write("--end".getBytes());

                           

                            int cah=con.getResponseCode();

 

                            if(cah!=200)throw new RuntimeException("请求url失败");

                            out.close();

                            con.disconnect();

                            out.flush();

                   } catch (Exception e) {

                            e.printStackTrace();

                   }

         }

}

 

package com.shuangchuan;

 

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

 

import android.app.Activity;

import android.os.Bundle;

 

public class HttpActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        String str[]=new String[]{"yang","wei","dong"};

        MyData data=new MyData();

        data.post(str);

        

    }

}

 

package com.shuangchuan;

 

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URL;

import java.util.List;

 

import org.apache.http.HttpResponse;

import org.apache.http.NameValuePair;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.client.methods.HttpPost;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.protocol.HTTP;

import org.apache.http.util.EntityUtils;

 

public class aaaa {

         // 通过POST将本地数据发送给服务器,string参数表

         public static String sendDataByPost(String url, List datas){

                  

         org.apache.http.client.HttpClient client = new DefaultHttpClient();

         HttpPost post = new HttpPost(url);

         HttpResponse resp = null;

         String result = "";

         // post data

         try {

         post.setEntity(new UrlEncodedFormEntity(datas,HTTP.UTF_8));

         resp = client.execute(post);

         sendDataByPost(url, datas);

         result = EntityUtils.toString(resp.getEntity());

         } catch (UnsupportedEncodingException e) {

         e.printStackTrace();

         } catch (ClientProtocolException e) {

         e.printStackTrace();

         } catch (IOException e) {

         e.printStackTrace();

         }

         return result;

         }

}

连接 SQL Server 到外部数据库可以通过多种方式实现,具体取决于目标数据库的类型以及是否支持与 SQL Server 的互操作性。以下是一些常见方法和步骤,适用于不同类型的外部数据库。 ### 使用 PolyBase 连接到外部数据源 SQL Server 2019 及以上版本支持 PolyBase 技术,允许将外部数据源(如 Azure SQL 数据库、Azure Synapse Analytics、Oracle、MongoDB 等)作为外部表进行查询。 #### 步骤如下: 1. **创建数据库作用域凭据(Database Scoped Credential)** 需要为目标数据库提供身份验证信息: ```sql CREATE DATABASE SCOPED CREDENTIAL SQL_Credential WITH IDENTITY = 'username', SECRET = 'password'; ``` 2. **创建外部数据源(External Data Source)** 指定目标数据库的地址、端口和类型: ```sql CREATE EXTERNAL DATA SOURCE ExternalSQLServer WITH ( TYPE = RDBMS, LOCATION = 'your-external-server.database.windows.net', DATABASE_NAME = 'YourExternalDatabase', CREDENTIAL = SQL_Credential ); ``` 3. **创建外部表(External Table)** 定义目标数据库中的表结构,并将其映射为 SQL Server 中的外部表: ```sql CREATE EXTERNAL TABLE dbo.ExternalTable ( ID INT, Name NVARCHAR(100) ) WITH ( DATA_SOURCE = ExternalSQLServer, SCHEMA_NAME = 'dbo', OBJECT_NAME = 'YourExternalTable' ); ``` 4. **查询外部表** 一旦创建完成,即可像查询本地表一样查询外部表: ```sql SELECT * FROM dbo.ExternalTable; ``` 此方法适用于 Azure SQL 数据库和 Azure Synapse Analytics,同时也支持其他兼容的数据源[^1]。 --- ### 使用链接服务器(Linked Server) 对于不支持 PolyBase 的数据库类型,可以使用 SQL Server 的“链接服务器”功能来连接外部数据库。 #### 配置 OLE DB 提供程序并创建链接服务器: ```sql EXEC sp_addlinkedserver @server = 'ExternalServer', @srvproduct = '', @provider = 'SQLNCLI', @datasrc = 'your-external-server'; EXEC sp_addlinkedsrvlogin @rmtsrvname = 'ExternalServer', @useself = 'false', @rmtuser = 'username', @rmtpassword = 'password'; ``` #### 查询外部数据库: ```sql SELECT * FROM [ExternalServer].[YourExternalDatabase].[dbo].[YourExternalTable]; ``` 该方法适用于大多数支持 OLE DB 的数据库系统,包括其他 SQL Server 实例、OracleMySQL 等。 --- ### 在 Android 应用中连接 SQL Server 数据库 如果目标环境是 Android 平台,可以使用 JDBC 驱动程序(如 `sqljdbc42.jar`)来连接 SQL Server 数据库: ```java String url = "jdbc:sqlserver://your-sql-server:1433;databaseName=YourDatabase;user=yourUsername;password=yourPassword;"; Connection connection = DriverManager.getConnection(url); ``` 需要在 `build.gradle` 中添加网络权限并引入 JDBC 依赖[^2]。 --- ### 使用第三方工具自动化连接 某些工具(如 `turnadmin`)可以简化与数据库的连接和管理,尤其是在处理 SQLite、PostgreSQL、MySQL、Redis 或 MongoDB 时。只需创建数据库并运行工具即可自动配置连接和用户权限[^3]。 --- ### 使用 SQL Server Management Studio (SSMS) 连接 在 SSMS 中,可以通过“服务器”窗口双击已配置的连接以打开仪表板,然后选择“新建查询”进行交互[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值