Имя "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();
}
}
}
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, после исправления, щелкните правой кнопкой мыши, мыши на решения и системы.Пространство имен данных. работал на меня!