我要编辑文本框值..但我看到有问题
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;
}
答案 0 :(得分:12)
C#是大小写的...尝试使用intellisense。
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();
}
}
}
答案 1 :(得分:7)
SqlDbType s需要大写!
答案 2 :(得分:3)
yes but theres no any case sensitivity problem know
您实际上有语法错误,因为您使用了s
而不是S
。此外
SqlCommand没有名为Open()
的方法,也没有Close()
您应该使用SqlConnection,因为它包含方法Open()
和Close()
并将SqlCommand的Connection
属性设置为您的SqlConnection
实例,以便打开和关闭连接到您的数据库。
答案 3 :(得分:2)
您有更多错误。
SqlConnection
而不是DatabaseConnector
com
的SqlCommand,但将其称为cmd
ItemNo
以及ItemName
)。根据您的新来源进行修改:
con.Connect()
代替con.Open()
来纠正。这是你自己的代码吗?
答案 4 :(得分:1)
您使用的是The Code Project制作的课程吗?
好吧,我认为错误是因为连接字符串。连接字符串必须位于类OdbcDatabaseConnector中。好吧,我从来没有使用过这类代码项目,但可以是它。
答案 5 :(得分:1)
如果你用资本写作' S'但仍然得到相同的错误,特别是在visual studio 2015中,而不是写'SqlDbType' ,写道: System.Data.SqlDbType
例如:
param[0] = new SqlParameter("@Name", System.Data.SqlDbType.VarChar,50);
答案 6 :(得分:0)
SqlDbType中的首字母'S',在进行更正后,右键单击该单词,鼠标悬停以解析选项并添加System.Data名称空间。为我工作!