Рейтинг:
15
Ranjan.D
Цитата:
команда.Метод executenonquery();
используется для вставки/обновления
Вы должны использовать ExecuteReader и загрузить данные в DataTable и, наконец, привязать к Grid.
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.Значение closeconnection);
DataTable dt = новый DataTable();
ДТ.Нагрузки(др);
arave0521
Если я использую ExecuteReader, могу ли я вставлять и редактировать данные во время выполнения? Можете ли вы показать его на основе моего кода? Я все еще не понимаю. Спасибо
Ranjan.D
Вы не можете выполнить операцию вставки/обновления с помощью ExecuteReader. Ваш код для привязки действительно получает все данные, и вы пытаетесь привязать их к сетке. Я не вижу никакой операции вставки.
Вот модифицированный код
частный недействительными привязки()
{
строки string connStr = "источник данных=localhost;для порта=3306;имя пользователя=root;пароль=корень;";
conn = new MySqlConnection(connStr);
MySqlCommand command = conn.CreateCommand();
пробовать
{
строки базе = schemaForm.метода GetData;
dtable = новый DataTable();
Коннектикут.Открыть();
команда.CommandText = "SELECT Metabolite_Name" +
"Из" + база данных +
".Метаболиты где"+
"MetaboliteID IN ('met1', 'met2');";
SqlDataReader dr = команда.ExecuteReader(CommandBehavior.Значение closeconnection);
dtable.Нагрузка(dr);
dbMetName.Источник данных = dtable;
Коннектикут.Закрывать();
}
поймать (исключение бывший)
{
Ящик для сообщений.Показать(напр.сообщение);
}
}
arave0521
код по-прежнему есть проблема с SQL-команды. Я почти уверен, что вопрос был правильным.
Ranjan.D
Я немного изменил код.. Попробовать теперь.. Также поставьте точку останова и проверьте, заполняется ли datatable.
arave0521
База данных была заполнена. Я проверил его в Mysql workbench. Когда я запускаю модифицированный код, он говорит, что ошибка в синтаксисе SQL рядом с '.Metabolites, где MetaboliteID IN ('met1', 'met2');
Ranjan.D
Я думаю , что проблема заключается в названии таблицы - .Metabolites, Пожалуйста, удалите точку (.) или убедитесь, что имя таблицы правильное. Кроме того, вы можете поместить точку останова в команду.CommandText , сделайте одноступенчатую отладку , нажав клавишу F11, затем скопируйте sql-запрос и выполните то же самое в MySql bench , уверенный, что вы будете знать, в чем проблема.
arave0521
Вот файл проекта, в котором я застрял
https://www.dropbox.com/s/c8z58opqorplom6/DynamicSimulator_v2.zip
Ranjan.D
Вот модифицированный код.
Примечание : строка подключения к базе данных была изменена, чтобы включить базу данных.
частный недействительными привязки()
{
string connStr = строка.Формат("источник данных=localhost;для базы данных={0};порт=3306;имя пользователя=root;password=пароль пользователя root;", schemaForm.метода GetData);
пробовать
{
использование (conn = new MySqlConnection(connStr))
{
MySqlCommand command = conn.CreateCommand();
dtable = новый DataTable();
bindingSource = новый BindingSource(); ;
Коннектикут.Открыть();
команда.CommandText = "SELECT Metabolite_Name FROM" +
"Продукты метаболизма " +
"Где MetaboliteID IN ('met1', 'met2');";
MySqlDataReader dr = команда.Метода executereader();
dtable.Нагрузка(dr);
dbMetName.Источник данных = dtable;
}
}
поймать (исключение бывший)
{
Ящик для сообщений.Показать(напр.сообщение);
}
}
arave0521
Код уже работает! только вопрос расположения в command.commandText. Спасибо за помощь. Я ценю это!
Ranjan.D
Ахх забыл удалить еще одну строку кода которая не требуется
bindingSource = новый BindingSource(); ;
Рейтинг:
1
Member 14344246
публичный частичный вход в класс : форма
{
SqlConnection con = new SqlConnection(@"источник данных=.\SQLEXPRESS;начальный каталог=Library_management_system;Интегрированная безопасность=True;экземпляр пользователя=True");
int count = 0;
публичный вход в систему()
{
метод InitializeComponent();
}
частный недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
SqlCommand cmd=con.CreateCommand();
УМК.Свойство Commandtype = Значение Commandtype.Текст;
УМК.Свойства commandtext = "выбрать * из Library_person где usernaem='"+текстовое поле textbox1.Текст+"' и пароль='"+поле textbox2.Текст+"'";
УМК.Метод executenonquery();
DataTable dt = новый DataTable();
SqlDataAdapter da = новый SqlDataAdapter(cmd);
да.Заполнить(ДТ);
count=конвертировать.ToInt32(dt.Rows.Рассчитывать.Метод toString());
if(count==0)
{
Ящик для сообщений.Показать("имя пользователя пароль не совпадает");
}
еще
{
этот.Скрыть();
mdi_user му = новый mdi_user();
мю.Покажите();
}
}
частная Login_Load недействительным(объект отправителя, EventArgs в электронной)
{
if(con.State==ConnectionState.Открыть)
{
против.Закрывать();
}
против.Открыть();
}
}
CHill60
Помимо огромного риска безопасности хранения пароля в виде обычного текста в вашей базе данных и огромного риска уязвимости к атаке SQL-инъекций (объединенная строка для создания запроса с использованием пользовательского ввода), вы используете метод ExecuteNonQuery для выполнения запроса. Неправильно на стольких уровнях