2013-01-10 83 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); 
       } 
     } 
    }