Android通过WebService远程访问SQLServer数据库配置

先放资源(WebService代码C#):https://download.csdn.net/download/yuwb980214/10721054

居然不能免费。

————————————————————————————————————————————

配置http://blog.csdn.net/zhyl8157121/article/details/8169172该帖子中的WebService,代码见http://blog.csdn.net/haoxingfeng/article/details/9111105。

上面两个帖子里面代码本机运行完全没有问题。

1. 配置IIS(每个版本都差不多)

网上很多了,随便粘一个:http://jingyan.baidu.com/article/eb9f7b6d9e73d1869364e8d8.html。

注:不管win7还是win10必须是旗舰版/专业版,家庭版没有这功能。

2. 发布WebService(VS2010)

在例程Demo/StockManageWebservie工程里面先建立一个数据库文件(服务器资源管理器窗口-右击数据连接-添加连接-SQL数据库文件-起名字-确定),如图(因为没安装独立的SQL Server,只是用的VS自带的SQL Server Express,所以使用windows身份验证)

按照原帖要求建立表(Cno设置为主键,递增)。Cname字符型,Cnum整型。

将数据的库的链接字符串拷贝到DBOperation.cs里面,F5运行即可打开网页实现对数据库的控制。

这里的网址可以看出是本地的地址,这个webservice是由VS提供的,只能本地访问。

然后右击C#项目,选发布,点文件系统,选一个电脑上的位置,比如E:\StockManage,会自动生成文件夹和文件

3. 配置IIS+WebService

把IIS路径配置好,端口号配置好,默认文档增加service1.asmx。启动服务

4.将路由器端口号与本机IP绑定。这样外网访问就配置好了,可以通过外网IP:11125来访问SQL

    

5.修改Android程序。在httpconnsoap.java里修改连接字符串,这里的需要设置成外网IP,其他的代码都不需要修改,原作者已经写好。

6.可以通过Android程序访问WebService了

  

 

FAQ:

1.WebService发布的时候遇到的问题:“尝试为文件 C:\XXX\XXX.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中

原因是数据库文件位置变化或者无法打开,解决方法:

1)发布的位置不要放在windows用户的文件夹下,可能有权限问题。

2)断开VS与SQL文件的连接。关闭后数据连接会显示一个差。

3)打包发布SQL设置里面不要修改(不读取Web.config文件里面的连接字符串)。

2.发布完WebService后,通过IIS只能本地访问,远程访问出现错误。“测试窗体只能用于来自本地计算机的请求”

 

解决方法:
      在web.config的<system.web></system.web>中间加入如下配置节内容
 

[html] view plain copy print?

  1. <webServices>  
  2.         <protocols>  
  3.            <add name="HttpSoap"/>  
  4.            <add name="HttpPost"/>  
  5.            <add name="HttpGet"/>  
  6.            <add name="Documentation"/>  
  7.         </protocols>  
  8. </webServices>  

3. Android程序运行时,执行getOutputStream()时出现“NetworkOnMainThreadException”错误,在Android2.2以上版本中出现,提示不要在主线程中访问网络,这个问题网上有很多种解决方法,例如: http://blog.csdn.net/wdxpg123/article/details/25291191。

 

程序测试运行时最简单的修改方法:在AndroidManifest.xml文件中,把minSdkVersion的版本设置为小于8,android:targetSdkVersion="15"一句直接删掉,让eclipse认为android运行版本不高于8。不推荐发布使用。

4.还遇到了IIS和VS的framework版本不兼容的问题,把VS和IIS都改成4.0就可以了。

 

——————————————————————————————————————————————

 

最近重新配置了一下,又发现了几个问题,CSDN上很多人都遇到过并解决,记录如下:

5. 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

解决方法:https://blog.csdn.net/xingxing513234072/article/details/38615997

6. 编译器错误消息:CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary .....................

............拒绝访问。

解决方法:

原因是由于系统目录下的Temp目录无相应的权限所致,具体操作如下:

来到C:/Windows目录,修改temp文件夹的属性。

在安全页设置IIS-IUSRS的权限,赋予修改、读取、写入等权限。

  

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要通过Android连接SQL Server并使用WebService,您可以按照以下步骤进行操作: 1. 首先,确保您已经创建了一个用于SQL Server数据库的服务器以及相应的表。 2. 下载并安装适用于Android开发的IDE(如Android Studio)并创建新的Android项目。 3. 在Android项目的build.gradle文件中,添加Java连接SQL Server所需的依赖项。示例代码如下: ```java dependencies { implementation 'net.sourceforge.jtds:jtds:1.3.1' } ``` 4. 在Android的MainActivity.java文件中,编写以下代码来创建使用WebService连接SQL Server的逻辑: ```java import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; private static final String ip = "your_server_ip_address"; private static final String port = "your_sql_server_port"; private static final String database = "your_database_name"; private static final String user = "your_username"; private static final String password = "your_password"; private Button connectButton; private TextView resultTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); connectButton = findViewById(R.id.connectButton); resultTextView = findViewById(R.id.resultTextView); connectButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new ConnectSQLServer().execute(); } }); } private class ConnectSQLServer extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... voids) { String result = ""; try { Class.forName("net.sourceforge.jtds.jdbc.Driver"); String url = "jdbc:jtds:sqlserver://" + ip + ":" + port + "/" + database; Connection connection = DriverManager.getConnection(url, user, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("your_sql_query_here"); while (resultSet.next()) { result += resultSet.getString("your_column_name"); } resultSet.close(); statement.close(); connection.close(); } catch (Exception e) { Log.e(TAG, "Error: " + e.getMessage()); result = "Error: " + e.getMessage(); } return result; } @Override protected void onPostExecute(String result) { resultTextView.setText(result); } } } ``` 通过上述代码,当用户点击Connect按钮时,将会创建一个异步任务来连接SQL Server并执行查询。请确保将您的服务器IP地址、端口、数据库名称、用户名和密码替换为实际值。 5. 在Android的布局文件(activity_main.xml)中,创建一个Button和一个TextView用于显示查询结果。 ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="16dp" android:paddingTop="16dp" android:paddingRight="16dp" android:paddingBottom="16dp"> <Button android:id="@+id/connectButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Connect" android:layout_centerInParent="true"/> <TextView android:id="@+id/resultTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/connectButton" android:textSize="18sp"/> </RelativeLayout> ``` 6. 运行Android应用程序,并点击Connect按钮以连接SQL Server并显示查询结果。 这就是使用Android连接SQL Server并使用WebService的详细教程。请注意,这只是一个基本示例,您可能需要根据您的特定需求进行一些调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值