Имя "sqlDbType" не существует в текущем контексте

Я собираюсь отредактировать значение textbox.. но я видел, что есть проблема

  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" не существует в текущем контексте

Ошибка 2:

' ERPSystem.DatabaseConnector "не содержит определения для "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;
    }

7 ответов


C# - это case sensetive... Попробуйте использовать intellisense.

SqlDbType

другие ошибки могут исчезнуть, если вы исправите первую.


на боковой ноте вы столкнетесь с утечками соединения/памяти без надлежащей обработки ресурсов. Лично я использую using заявление, чтобы избежать подводных камней.

Я не совсем уверен, что такое "DatabaseConnector", возможно, ваш собственный класс, но вы, вероятно, должны использовать SqlConnection вместо этого, или, возможно,SqlDatabase.

Update: я не уверен, что класс 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(); 
          }
        }
     }

SqlDbType s должен быть капитализирован!


yes but theres no any case sensitivity problem know 

у вас действительно есть синтаксические ошибки, потому что вы использовали s вместо S. Кроме того SqlCommand не имеет метода с именем Open() не есть Close()

вы должны использовать SqlConnection, так как он содержит методы Open() и Close() и выберите команду sqlcommand по Connection свойство для экземпляра SqlConnection для того, чтобы открыть и закрыть соединение с вашей базой данных.


у вас больше ошибок.

  • основываясь на том, как вы его используете, я думаю, вы имеете в виду SqlConnection вместо DatabaseConnector
  • вы создаете SqlCommand с именем com, но относитесь к нему как cmd
  • вам нужно будет назначить SqlConnection SqlCommand, или он не будет знать, какое соединение открыть.
  • вы предоставляете только 1 параметр SqlCommand, в то время как запрос нуждается в двух (ItemNo а также ItemName).

Edit, на основе вашего нового источника:

  • ошибка "DatabaseConnector" не содержит определения для "Open" может быть исправлена путем записи con.Connect() вместо con.Open().
  • однако другая ошибка, что она не имеет функции "Close ()", не может быть исправлена - нет никакого способа сказать ей, чтобы закрыть соединение.

это ваш собственный код?


вы используете класс, сделанные Проект Код ?

Ну, я думаю, что ошибка заключается в том, что строка подключения. Строка подключения должна находиться в классе OdbcDatabaseConnector. Ну, я никогда не использовал этот класс проекта кода, но может быть.


Если вы пишете с заглавной буквы "S", но по-прежнему получаете ту же ошибку, особенно в visual studio 2015, то вместо записи "SqlDbType", напишите : Система.Данные.Значения sqldbtype

например:

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

его капитал 'S' В значения sqldbtype, после исправления, щелкните правой кнопкой мыши, мыши на решения и системы.Пространство имен данных. работал на меня!