Android连接SQLServer详细教程 空指针解决方案

Android连接SQLServer详细教程(数据库+服务器+客户端)

原文地址:  http://blog.csdn.net/zhyl8157121/article/details/8169172

部分童鞋运行时会报如下错误:

05-15 06:06:33.790: W/dalvikvm(1772): threadid=1: thread exiting with uncaught exception (group=0xb4f56288)
05-15 06:06:33.855: E/AndroidRuntime(1772): FATAL EXCEPTION: main
05-15 06:06:33.855: E/AndroidRuntime(1772): java.lang.NullPointerException

大家都关注在空指针问题上,拼命的去查找有可能产生空值的地方,实际通过调试发现程序只要运行至

HttpConnSoap.java

OutputStream outStream = con.getOutputStream();

就会跳出程序,下面就不运行了。(说到这里对eclisp报怨一下,调试老是报class not found,已转战android studio)

android studio感觉比eclisp强多了,如果大家安装时碰到

Failed to import Gradle project的问题可以参见以下地址

http://blog.csdn.net/caopeng51/article/details/10948171 今天刚解决的,呵呵。

看了一下catlog(android studio的)提示 NetworkOnMainThreadException(原贴地址http://blog.csdn.net/qinpengtaiyuan/article/details/8038074)原因android4.0以上不允许直接从主程序调用线程(大概是这意思吧?)

在MainActivity.java中加入以下蓝字部分

  1. public void onCreate(Bundle savedInstanceState) {  
  2.         super.onCreate(savedInstanceState);  
  3.         setContentView(R.layout.activity_main); 
    1. StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()  
    2.             .detectDiskReads().detectDiskWrites().detectNetwork()  
    3.             .penaltyLog().build());  
    4.   
    5. StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()  
    6.             .detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()  
    7.             .build()); 
     
  4.   
  5.         btn1 = (Button) findViewById(R.id.btn_all);  
  6.         btn2 = (Button) findViewById(R.id.btn_add);  
  7.         btn3 = (Button) findViewById(R.id.btn_delete);  
  8.         listView = (ListView) findViewById(R.id.listView);  
  9.         dbUtil = new DBUtil();  

如果报错,androidmanifest.xml中最低版本号改为9即可。

 <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="16" />



要通过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、付费专栏及课程。

余额充值