当前上下文中不存在名称"sqlDbType"

Lea*_*ner 7 c# c#-4.0

我要编辑文本框值..但我看到有问题

  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();

    }
Run Code Online (Sandbox Code Playgroud)

错误1:

当前上下文中不存在名称"sqlDbType"

错误2:

'ERPSystem.DatabaseConnector'不包含'Open'的定义,也没有扩展方法'Open'接受类型'ERPSystem.DatabaseConnector'的第一个参数可以找到(你是否缺少using指令或汇编引用?)

我的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;
    }
Run Code Online (Sandbox Code Playgroud)

Chr*_*ler 12

C#是大小写的...尝试使用intellisense.

SqlDbType
Run Code Online (Sandbox Code Playgroud)

如果您更正了第一个错误,其他错误可能会消失.


另外,如果没有适当的资源处理,您将遇到连接/内存泄漏.就个人而言,我使用该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(); 
          }
        }
     }
Run Code Online (Sandbox Code Playgroud)

  • @Learner - 红色下划线表示该方法不存在.单击"实现"时,它会为您在类中放置方法存根.我猜你没有正确使用DatabaseConnector类,但我没有来源指导你. (2认同)

jav*_*ava 7

SqlDbType的s需要大写!