Unity3d鏈接SQL Server數據庫出現SocketException: 使用了與請求的協議不兼容的地址錯誤

  這兩天,同窗問我Unity3d鏈接SQL Server的問題,當時我只是簡單的說:「應該同樣吧,就是那簡單的幾句啊」。以後他讓我試了下,我才發現有問題了。故此寫下一篇博客,要牢記這件事的教訓,操做數據庫,咱們人人都會,然而,咱們要知道:有些事,並非咱們會啦,就有能力去完成的,咱們必需要注重各類細節,才能勝任咱們做爲程序員的工做(雖然我仍是個學生)。程序員

  下面進入主題吧,咱們先看看鏈接數據庫:數據庫

    一、引入程序集System.Data.dll,位置在C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity(默認位置),把System.Data.dll文件複製到當前Unity項目文件下,即Assets文件夾下就能夠了。app

    二、將程序集Sysem.Data.dll用VS2015手動引入便可。ui

using UnityEngine;
using System.Collections;
using System.Data.SqlClient;
using System;

public class Testaa : MonoBehaviour
{

    // Use this for initialization
    SqlConnection con = new SqlConnection("Data Source=主機名;Initial Catalog=db_CSharp;Persist Security Info=True;User ID=sa;Password=密碼");

    void Start()
    {
        Do();
    }
    void Do()
    {
        con.Open();
        SqlCommand com = new SqlCommand("select * from tb_PDic", con);
        SqlDataReader sdr = null;
        try
        {
            sdr = com.ExecuteReader();
            print("名稱\t\t\t\t價格\n");
            while (sdr.Read())
            {
                print(sdr["Name"] + "\t\t\t\t" + sdr["Money"] + "\n");
            }
            con.Close();
        }
        catch (Exception ex)
        {
            print(ex.Message);
        }
    }
    // Update is called once per frame
    void Update()
    {
    }
}

 

保存後運行。出現以下錯誤:this

SocketException: 使用了與請求的協議不兼容的地址。spa

System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy)
System.Net.Sockets.Socket+Worker.Connect ()
Rethrow as TdsInternalException: Server does not exist or connection refused.
Mono.Data.Tds.Protocol.TdsComm..ctor (System.String dataSource, Int32 port, Int32 packetSize, Int32 timeout, TdsVersion tdsVersion)
Mono.Data.Tds.Protocol.Tds..ctor (System.String dataSource, Int32 port, Int32 packetSize, Int32 timeout, TdsVersion tdsVersion)
Mono.Data.Tds.Protocol.Tds70..ctor (System.String server, Int32 port, Int32 packetSize, Int32 timeout, TdsVersion version)
Mono.Data.Tds.Protocol.Tds80..ctor (System.String server, Int32 port, Int32 packetSize, Int32 timeout)
Mono.Data.Tds.Protocol.TdsConnectionPoolManager.CreateConnection (Mono.Data.Tds.Protocol.TdsConnectionInfo info)
Mono.Data.Tds.Protocol.TdsConnectionPool.GetConnection ()
System.Data.SqlClient.SqlConnection.Open ()
Rethrow as SqlException: Server does not exist or connection refused.
System.Data.SqlClient.SqlConnection.Open ()
(wrapper remoting-invoke-with-check) System.Data.SqlClient.SqlConnection:Open ()
Testaa.Do () (at Assets/Testaa.cs:17)
Testaa.Start () (at Assets/Testaa.cs:13)3d

 

解決方法:將主機名改成主機的IP地址便可。code

相關文章
相關標籤/搜索