2013-01-10 58 views
-1

我有一個mysql表調用UIDhold和一列名爲UID(主鍵)。我有值從1到200自動遞增。Mysql .Net選擇/刪除自動增量值

在我的WPF應用程序中,我有mysql .net庫引用並已成功連接到數據庫。我想知道的是連接到數據庫後,我將如何選擇UID(例如; 1),存儲該值文本框或字符串變量,然後從數據庫表中刪除該UID?

當我在MySQL CMDLINE執行:

SELECT LAST_INSERT_ID(); 

我得到0,但是第一個值應爲1

任何指導將是偉大的!

UPDATE:

我已經弄清楚如何選擇鉛丹UID,這將是1,但是我不知道如何將其存儲在一個字符串變量/文本框。 UIDTextBox.Text = myData時出現語法錯誤。 「類型System.data.datatable的值不能轉換爲字符串。」那麼我需要做什麼?

VB.Net

Imports MySql.Data.MySqlClient 
Imports System.Data 


Public Class test1 


Dim cmd As New MySqlCommand 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click 
    Dim myCommand As New MySqlCommand 
    Dim myAdapter As New MySqlDataAdapter 
    Dim myData As New DataTable 
    Dim SQL As String 
    Dim connStr As String = "Database=;" & _ 
         "Data Source=localhost;" & _ 
         "User Id=;Password=;" 
    Dim connection As New MySqlConnection(connStr) 

    connection.Open() 
    SQL = "SELECT MIN(UID) FROM `UIDhold`" 


    myCommand.CommandText = SQL 

    myAdapter.SelectCommand = myCommand 
    myAdapter.Fill(myData) 




    UIDTextBox.Text = myData 

End Sub 
End Class 

XAML

<Window x:Class="test1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="test1" Height="300" Width="300"> 
<Grid> 
    <Button Content="Sign In" Height="23" HorizontalAlignment="Left" Margin="184,159,0,0" Name="Button1" VerticalAlignment="Top" Width="75" /> 
    <TextBox Height="23" HorizontalAlignment="Left" Margin="120,38,0,0" Name="UIDTextBox" VerticalAlignment="Top" Width="68" /> 
    <Label Content="UID" Height="28" HorizontalAlignment="Left" Margin="58,33,0,0" Name="Label1" VerticalAlignment="Top" /> 
</Grid> 
</Window> 
+1

在你的代碼中,你調用SELECT LAST_INSERT_ID();您需要在插入後直接調用它。你可以顯示你正在使用的代碼來執行插入..? – MethodMan

+0

也存儲值在應用程序級別Properties.Settings你可以看看這個鏈接的一個很好的例子[Saving to Properties.Settings](http://www.codeproject.com/Articles/17659/How-To-Use -the-Settings-Class-in-C) – MethodMan

+0

我已經弄清楚如何選擇minium UID,這將是1.但是我不知道如何將它存儲在字符串變量/文本框中。 UIDTextBox.Text = myData時出現語法錯誤。 「類型System.data.datatable的值不能轉換爲字符串。」那麼我需要做什麼?參見上面的VB代碼/ XAML。 –

回答

1

自動遞增可以通過MySQL服務器本身來完成。你只需要在設置桌子時設置它。

CREATE TABLE data(
    UID MEDIUMINT NOT NULL AUTO_INCREMENT, 
    name CHAR(30) NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=MyISAM; 

所以每當你想將其存儲到數據庫中,如果您將值設置爲NULL,將自動遞增。

INSERT INTO animals (name) VALUES 
    ('ssss') 

也idk你想要做的(希望我理解它的權利);但是,如果你想創建數據表,你將不得不解析每一行,然後使用while循環添加它,我認爲。

table.Columns.Add("UID", typeof(int)); 
    table.Columns.Add("name", typeof(string)); 


    using (var varConnection = Locale.sqlConnectOneTimeMySql(Locale.sqlDataConnectionDetailsMySQL)) 
    using (var sqlQuery = new MySqlCommand(preparedCommand, varConnection)) { 
     using (var sqlQueryResult = sqlQuery.ExecuteReader())     
       while (sqlQueryResult.Read()) { 
//above is basic sql stuff i expect you know 


//Here's where you ge thte data 
        int uid = sqlQueryResult["UID"] is int ? (int)sqlQueryResult["UID"] : 0; 
        string name = sqlQueryResult["name"].ToString(); 

// here is where you're outputting to your table 
        table.Rows.Add(uid,name); 
       } 
     } 
    }