2012-06-22 94 views
7

我要編輯文本框的值..但我看到有一個問題名稱「sqlDbType」不在當前情況下存在

protected void btn_edit_Click(object sender, EventArgs e) 
    { 
     DatabaseConnector con = new DatabaseConnector().CreateInstance(); 
     SqlCommand com = new SqlCommand("UPDATE tbl_BinCardManager SET ItemName = @ItemName WHERE ItemNo = @ItemNo"); 
     com.Parameters.Add("@ItemName",sqlDbType.VarChar); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

    } 

錯誤1:

名稱' sqlDbType」不在當前上下文中存在

ERROR 2:

'ERPSystem.DatabaseConnector'不包含'Open' 的定義,並且沒有找到接受第一個參數的擴展方法'Open',該類型爲 可以找到'ERPSystem.DatabaseConnector'(缺少使用 指令或程序集引用?)

我DBConnector類是:

class DatabaseConnector 
{ 
    private DatabaseConnector databaseConnector; 
    private string connectionString = "Data Source=lernlap;Initial Catalog=ERPSystemDB;User ID=sa;Password=sa123"; 

    public DatabaseConnector() 
    { 

    } 

    private SqlConnection connection; 

    private bool Connect() 
    { 
     try 
     { 
      connection = new SqlConnection(connectionString); 
      connection.Open(); 
      return true; 
     } 
     catch(Exception) { 

      return false; 

     } 
    } 

    internal DatabaseConnector CreateInstance() 
    { 
     if (databaseConnector == null) 
     { 
      databaseConnector = new DatabaseConnector(); 
      databaseConnector.Connect(); 
     } 
     return databaseConnector; 
    } 
+2

C#區分大小寫。 –

+0

是的,但沒有任何大小寫敏感的問題知道 – Learner

+3

SqlDbType - 你有小寫字母s – javajavajava

回答

12

C#是區分sensetive ...嘗試使用智能感知。

SqlDbType 

如果您更正第一個錯誤,其他錯誤可能會消失。


在一個側面說明,你要沒有適當的資源處理碰上連接/內存泄漏。就個人而言,我用的是using語句來避免重蹈覆轍。

我不完全確定「DatabaseConnector」是什麼,可能是您自己的類,但您應該使用SqlConnection,或者可能使用SqlDatabase

更新:我不知道,如果DBConnector類應該是一個單身或工廠,或兩者 - 所以我只是簡化了我的答案,以避免使用它。請教關於如何建立你正在尋找的模式,並提供DBConnector類的細節另一個問題。我認爲這是可行的,但我沒有足夠的信息來解決你的問題。

public static CONN_STR = "Data Source=lernlap;Initial Catalog=ERPSystemDB;User ID=sa;Password=sa123"; 

    protected void btn_edit_Click(object sender, EventArgs e) 
    { 
     using(SqlConnection con = new SqlConnection(CONN_STR)) 
     { 
      con.Open(); 

      using(SqlCommand cmd = new SqlCommand("UPDATE tbl_BinCardManager SET ItemName = @ItemName WHERE ItemNo = @ItemNo"), con) 
      { 

      // TODO: fill in param values with real values 
      cmd.Parameters.AddWithValue("@ItemName", "my item name"); 
      cmd.Parameters.AddWithValue("@ItemNo", 1); 

      cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
+0

另一件事是在con.Open()&con.close()附近的代碼是紅色加下劃線。當我把光標放在然後我看到了Methos Stub Create。(然後我看到了在db連接器類中創建的那個)爲什麼? – Learner

+1

究竟是什麼IS DatabaseConnector?你自己的班級? –

+1

@ChrisGessler - 如果我想冒險猜測它是基於這個代碼:http://www.codeproject.com/Articles/32909/Database-Connector –

2

您有更多的錯誤。

  • 根據你使用它的方式,我想你指的SqlConnection代替DatabaseConnector
  • 您創建一個名爲com的SqlCommand的,而是指它作爲cmd
  • 您需要關閉SqlConnection分配給SqlCommand,否則它將不知道要打開哪個連接。
  • 你只提供1個參數給SqlCommand,而查詢需要兩個(ItemNo以及ItemName)。

編輯,根據您的新來源:

  • 錯誤「DatabaseConnector」不包含定義‘開放’」可以通過寫con.Connect()而不是con.Open()予以糾正。
  • 但是,另一個錯誤,它沒有「Close()」函數,無法糾正 - 無法告訴它關閉連接。

這是你自己的代碼?

+0

是的,那就是我自己的代碼 – Learner

+0

然後給它添加一個函數可以關閉連接。或者直接扔掉整個DatabaseConnector並直接使用SqlConnection。 –

+0

當我在整個DatabaseConnector連接字符串也失去知道嗎? – Learner

1

您使用The Code Project製作的課程嗎?

嗯,我認爲錯誤是因爲連接字符串。連接字符串必須位於類OdbcDatabaseConnector中。那麼,我從來沒有使用這個類的代碼項目,但可以。

+0

我正在使用SQL數據庫連接器 – Learner

3
yes but theres no any case sensitivity problem know 

你其實有語法錯誤,因爲你用s代替S。此外 的SqlCommand沒有一個方法叫做Open()也不會有一個Close()

您應該使用的SqlConnection,因爲它包含的方法Open()Close(),爲了打開的SqlCommand的Connection屬性設置爲您的SqlConnection實例,關閉與數據庫的連接。

0

它在SqlDbType中的大寫字母「S」,在進行更正後,右鍵單擊該單詞,鼠標懸停在解析選項上並添加System.Data命名空間。爲我工作!

1

如果您正在使用資金「S」寫作,但仍得到相同的錯誤尤其是在Visual Studio 2015年,然後,而不是寫「SqlDbType」,寫: System.Data.SqlDbType

例如:

param[0] = new SqlParameter("@Name", System.Data.SqlDbType.VarChar,50); 
相關問題