2017-04-27 27 views
0

我有一個數據庫,其中包含我的產品購買者的信息,但我希望它將程序提供的值發送到數據庫,如果它爲空,我怎樣才能做到這一點?我無法將C#中的變量插入到MySql數據庫中

代碼:

我有我的產品的購買者的相關信息的數據庫,但我想這是由程序提供的值發送到數據庫,如果是空的,我該怎麼辦這個?

代碼:

string comando = "SELECT COUNT(*) FROM tbl_usuario WHERE [email protected] AND [email protected] AND tipo=1"; 
var connection = new MySqlConnection(connString); 
var cmd = new MySqlCommand(comando, connection); 
cmd.Parameters.AddWithValue("@Usuario", usuario); 
cmd.Parameters.AddWithValue("@Senha", senha); 
var command = connection.CreateCommand(); 
connection.Open(); 
MySqlDataReader leitor = cmd.ExecuteReader(); 
while (leitor.Read()) 
{ 
    hd_id = leitor["id"].ToString(); 
} 
if (hd_id == null) 
{ 
    //Code i need here 
} 
int retorno = Convert.ToInt32(cmd.ExecuteScalar()); 
connection.Close(); 
+0

如果您希望能夠將參數設置爲null,則不要使用「AddWithValue」。使用'Add'創建參數並在此時指定數據類型。如果沒有實際值,可以將該參數的'Value'屬性設置爲'DBNull.value'。 – jmcilhinney

回答

0

有相當多已迷失東京在這個問題了一點,但我覺得我讀書我想你想的來自要檢索的數據庫的ID。但查詢只是運行一個不包含該命令的count命令。

string comando = "SELECT COUNT(*) FROM tbl_usuario WHERE [email protected] AND [email protected] AND tipo=1"; 

實際上應該是

string comando = "SELECT id FROM tbl_usuario WHERE [email protected] AND [email protected] AND tipo=1"; 

當你只返回1個值(或NULL如果沒有記錄匹配),那麼你並不需要使用閱讀器;您可以直接閱讀退貨,並檢查爲空

var sqlReturn = cmd.ExecuteScalar(); 
if (sqlReturn == null) { /* Code i need here */ } 
else { hd_id = (int)sqlReturn; } 

如果我不明白這個問題,請隨時讓我知道,我們會看看我們是否能讓你修好。

+0

我與谷歌翻譯大混亂,但你設法找到我想要的東西,謝謝。 –

+0

我正在使用count來檢查輸入的登錄名和密碼是否正確,使用此選擇標識,它也會檢查相同的方式? –

+0

如果用戶名和密碼不匹配,則不會返回任何值;這將被'if(sqlReturn == null){/ * Code我需要在這裏* /}'捕獲 –

0

C#

cmd.Parameters.AddWithValue("@Usuario", String.IsNullOrEmpty(usuario) ? DBNull.Value : usuario); 
cmd.Parameters.AddWithValue("@Senha", String.IsNullOrEmpty(senha) ? DBNull.Value : senha); 
+0

我不認爲你很清楚我想要什麼。 我希望它採用主鍵(用戶),並返回數據庫中的人的id值到hd_id變量。 –

+0

伴侶,你不明白你問的是什麼,然後。 「我有一個包含我產品買家信息的數據庫,但是我希望它能夠將程序提供的價值發送到數據庫,如果它是空的,我該怎麼做?」 – DesertFox

+0

我建議你用葡萄牙語問問,但這不是正確的地方。回顧你的問題。 – DesertFox

相關問題