2011-07-21 73 views
0

MySQL連接老實說,我不知道這是否是我的代碼,或在數據庫的設置存在問題,但我希望有人仍然可以嘗試解決這個問題跟我。難點在Visual Basic 2010速成

所以,我有一個簡單的程序,暫時,只是連接到一個簡單的遠程MySQL數據庫通過WAMP設置和打印出表格中的第一個用戶名。

是我遇到的問題是如下(注意 - 我知道它說在第一行的SQL Server,這是因爲它是硬編碼到VB程序作爲第一行顯示):

Error while connecting to SQL Server. 

A network-related or instance-specific error occurred while establishing a connection to 
SQL Server. The server was not found or was not accessible. Verify that the instance name 
is correct and that SQLServer is configured to allow remote connections. 

(provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) 
  • 服務器設置IP地址:192.168.1.14

  • 我已經評論了 「綁定地址......」

  • 我創建2數據庫用戶;一個設置爲localhost作爲主機,另一個設置爲%作爲主機。

  • 的用戶名和密碼是非常基本的(他們是:用戶名密碼//)!

MY.INI:

# Example MySQL config file for medium systems. 
# 
# This is for a system with little memory (32M - 64M) where MySQL plays 
# an important part, or systems up to 128M where MySQL is used together with 
# other programs (such as a web server) 
# 
# You can copy this file to 
# /etc/my.cnf to set global options, 
# mysql-data-dir/my.cnf to set server-specific options (in this 
# installation this directory is C:\mysql\data) or 
# ~/.my.cnf to set user-specific options. 
# 
# In this file, you can use all long options that a program supports. 
# If you want to know which options a program supports, run the program 
# with the "--help" option. 

# The following options will be passed to all MySQL clients 
[client] 
#password = your_password 
port  = 3306 
socket  = /tmp/mysql.sock 

# Here follows entries for some specific programs 

# The MySQL server 
[wampmysqld] 
port  = 3306 
socket  = /tmp/mysql.sock 
key_buffer = 16M 
max_allowed_packet = 1M 
table_cache = 64 
sort_buffer_size = 512K 
net_buffer_length = 8K 
read_buffer_size = 256K 
read_rnd_buffer_size = 512K 
myisam_sort_buffer_size = 8M 
basedir=c:/wamp/bin/mysql/mysql5.5.8 
log-error=c:/wamp/logs/mysql.log 
datadir=c:/wamp/bin/mysql/mysql5.5.8/data 
#bind-address=127.0.0.1 

# Don't listen on a TCP/IP port at all. This can be a security enhancement, 
# if all processes that need to connect to mysqld run on the same host. 
# All interaction with mysqld must be made via Unix sockets or named pipes. 
# Note that using this option without enabling named pipes on Windows 
# (via the "enable-named-pipe" option) will render mysqld useless! 
# 
#skip-networking 

# Disable Federated by default 
skip-federated 

# Replication Master Server (default) 
# binary logging is required for replication 
log-bin=mysql-bin 

# binary logging format - mixed recommended 
binlog_format=mixed 

# required unique id between 1 and 2^32 - 1 
# defaults to 1 if master-host is not set 
# but will not function as a master if omitted 
server-id = 1 

# Replication Slave (comment out master section to use this) 
# 
# To configure this host as a replication slave, you can choose between 
# two methods : 
# 
# 1) Use the CHANGE MASTER TO command (fully described in our manual) - 
# the syntax is: 
# 
# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, 
# MASTER_USER=<user>, MASTER_PASSWORD=<password> ; 
# 
# where you replace <host>, <user>, <password> by quoted strings and 
# <port> by the master's port number (3306 by default). 
# 
# Example: 
# 
# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, 
# MASTER_USER='joe', MASTER_PASSWORD='secret'; 
# 
# OR 
# 
# 2) Set the variables below. However, in case you choose this method, then 
# start replication for the first time (even unsuccessfully, for example 
# if you mistyped the password in master-password and the slave fails to 
# connect), the slave will create a master.info file, and any later 
# change in this file to the variables' values below will be ignored and 
# overridden by the content of the master.info file, unless you shutdown 
# the slave server, delete master.info and restart the slaver server. 
# For that reason, you may want to leave the lines below untouched 
# (commented) and instead use CHANGE MASTER TO (see above) 
# 
# required unique id between 2 and 2^32 - 1 
# (and different from the master) 
# defaults to 2 if master-host is set 
# but will not function as a slave if omitted 
#server-id  = 2 
# 
# The replication master for this slave - required 
#master-host  = <hostname> 
# 
# The username the slave will use for authentication when connecting 
# to the master - required 
#master-user  = <username> 
# 
# The password the slave will authenticate with when connecting to 
# the master - required 
#master-password = <password> 
# 
# The port the master is listening on. 
# optional - defaults to 3306 
#master-port  = <port> 
# 
# binary logging - not required for slaves, but recommended 
#log-bin=mysql-bin 

# Point the following paths to different dedicated disks 
#tmpdir  = /tmp/  
#log-update  = /path-to-dedicated-directory/hostname 

# Uncomment the following if you are using InnoDB tables 
#innodb_data_home_dir = C:\mysql\data/ 
#innodb_data_file_path = ibdata1:10M:autoextend 
#innodb_log_group_home_dir = C:\mysql\data/ 
#innodb_log_arch_dir = C:\mysql\data/ 
# You can set .._buffer_pool_size up to 50 - 80 % 
# of RAM but beware of setting memory usage too high 
#innodb_buffer_pool_size = 16M 
#innodb_additional_mem_pool_size = 2M 
# Set .._log_file_size to 25 % of buffer pool size 
#innodb_log_file_size = 5M 
#innodb_log_buffer_size = 8M 
#innodb_flush_log_at_trx_commit = 1 
#innodb_lock_wait_timeout = 50 

[mysqldump] 
quick 
max_allowed_packet = 16M 

[mysql] 
no-auto-rehash 
# Remove the next comment character if you are not familiar with SQL 
#safe-updates 

[isamchk] 
key_buffer = 20M 
sort_buffer_size = 20M 
read_buffer = 2M 
write_buffer = 2M 

[myisamchk] 
key_buffer = 20M 
sort_buffer_size = 20M 
read_buffer = 2M 
write_buffer = 2M 

[mysqlhotcopy] 
interactive-timeout 

[mysqld] 
port=3306 

我的VB腳本:

Imports System.IO 
Imports System.Data 
Imports System.Data.SqlClient 

Module SQLcon1 

    'Dim connect As New SqlConnection 

    Sub Main() 
     Dim con As String = "server=192.168.1.14;uid=username;pwd=password;database=apache_test;" 
     'Alt method   "Data Source=192.168.1.14;Initial Catalog=apache_test;Persist Security Info=True;User ID=username;Password=password" 
     Dim connect As New SqlConnection(con) 
     Try 
      connect.Open() 
      Dim command As New SqlCommand("SELECT userid from TABLE2 limit 1", connect) 
     Catch ex As Exception 
      Console.WriteLine("Error while connecting to SQL Server." & ex.Message) 
      connect.Close() 'Whether there is error or not. Close the connection. 
     End Try 
     Console.WriteLine("Press Enter to continue") 
     Console.ReadLine() 
    End Sub 
End Module 

如果任何人都可以給一些見解,以什麼錯誤,我會從那裏和你一起工作。

謝謝。

Side-Note:

我剛剛意識到SQL連接的服務器上本地運行它的時候,而是從遠程計算機上運行時,它列出了一個類似的問題與工作從FTP服務器,所以我開始更傾向於這是MySQL配置可能的問題?


使用了Neil的建議並將SQLConnection切換到Odbc.OdbcConnection。它產生了以下錯誤:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 
+0

爲什麼你將問題標記爲mysql,然後向我們顯示關於sql server的錯誤? –

+0

@james_bond - 因爲據我所知,WAMP使用MySQL。我只是按照WAMP顯示的那樣去做。 此外,最上面一行是硬編碼爲「SQL Server」,請忽略它。 – Jason

回答

1

您必須使用MysqlConnector。 SqlConnection適用於SQL Server。

+0

只是注意到這是一個鏈接,而不是一個亮點。但我需要一些可以讓我的程序保持爲獨立可執行文件的東西,這就是爲什麼我首先寫這個東西的原因。我不希望我的程序必須依靠其他200個需要下載/安裝在我的程序運行的計算機上的程序。 – Jason

+0

@Jason:如果你想連接到MySQL,你需要一個驅動程序。如果你想使用ODBC,你需要myODBC http://dev.mysql.com/downloads/connector/odbc/3.51.html 如果你想使用完全託管的ADO.NET而不是下載mySQL連接器。沒有這個你想連接到mySQL! – 2GDev

2

SqlConnection只連接到MS SQL Server。要連接到MySql,您需要使用OdbcConnection或MySql的ado.net適配器。

+0

問題是,我希望能夠將它作爲一個獨立的可執行文件分發,當我完成它時,我不希望它需要一些其他的東西必須預先安裝在其他電腦上。 OdbcConnection是否需要插件? – Jason

+0

好的,我使用了Odbc.OdbcConnection(con)。它產生的錯誤:錯誤[IM002] [微軟] [ODBC驅動程序管理器]數據源名稱未找到,並沒有指定默認驅動程序 – Jason

+0

對不起,我應該建議OleDbConnection而不是OdbcConnection,但你仍然需要添加'Provider = MySQLProv'到你的連接字符串,你不需要爲MySqlConnection做。 – Neil