2014-09-30 49 views
0

我想讓我的程序導入在程序中輸入的數據,以更新MySQL中的表。我查看了代碼並做了一些研究,看起來應該可以工作,但數據沒有寫入MySQL服務器。任何幫助將不勝感激。以下是我的VB代碼和MySQL存儲過程。從VB程序中的數據沒有在MySQL中更新

 Public Class OrePriceUpdate 
    Dim Mysqlconn As MySqlConnection 
    Dim cmd As MySqlCommand 

Private Sub Update_Prices_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Update_Prices_Button.Click 
    Mysqlconn = New MySqlConnection() 
    Mysqlconn.ConnectionString = "server=xxxxxx;Uid=xxxx;Pwd=xxxxxx;database=xxxx" 

    Try 
     Mysqlconn.Open() 
     cmd = New MySqlCommand() 
     cmd.Connection = Mysqlconn 
     cmd.CommandText = "update_ore_prices" 
     cmd.CommandType = CommandType.StoredProcedure 

     cmd.Parameters.AddWithValue("@veldspar", Veldspar_Isk.Text) 
Catch myerror As MySqlException 
     MessageBox.Show(myerror.Message) 
    Finally 
     Mysqlconn.Dispose() 
    End Try 
End Sub 

SQL查詢

DELIMITER $$ 

USE `YHI`$$ 

DROP PROCEDURE IF EXISTS `update_ore_prices`$$ 

CREATE DEFINER=`YHI`@`%` PROCEDURE `update_ore_prices`(
IN veldspar DECIMAL(10,2) 
BEGIN 
INSERT INTO Ore_Ice_Prices(
    Veldspar 
VALUES(
    veldspar); 
END$$ 

DELIMITER ; 

回答

0

你打開你的連接,您創建命令對象,但你實際上並沒有執行它。一旦你完成添加參數使用執行:

cmd.ExecuteNonQuery() 

欲瞭解更多信息,試試這個link。特別是有執行命令的部分:

通常情況下,插入,更新和刪除都用於寫入或更改數據庫中的數據,而Select則用於讀取數據。出於這個原因,我們 有執行這些查詢的不同類型的方法。方法 如下:

ExecuteNonQuery: Used to execute a command that will not return any data, for example Insert, update or delete. 
ExecuteReader: Used to execute a command that will return 0 or more records, for example Select. 
ExecuteScalar: Used to execute a command that will return only 1 value, for example Select Count(*).