由 Visual Studio 2015使用;
DevExpress 17.1.5。
当我单击 WinForms 上的 NavigationFrame 空间时,navigationPage 会突出显示。
要切换到 NavigationFrame,我需要在 Properties 中选择 NavigationFrame
问题
我需要如何或在哪里单击 WinForms 以突出显示 NavigationFrame?
还是有另一种方法如何访问页面集合?
屏幕
编码
dv1 = new DataView(table3);
dv1.RowFilter = pole + " = '" + crit + "'"; // фильтр
dv1.Sort = "p_n"; // сортировка по возрастанию ВАР.
// DataView. Отобразить в dataGridView1
dataGridView1.DataSource = dv1;
foreach (var obj in dv1) // foreach 2 СПИСОК
{
DataRowView drv = (DataRowView)obj;
DataRow r = drv.Row;
if (// условие)
{
// выполнение ...
// ВОПРОС !!!
// Возврат к первому элементу коллекции
}
// код...
}
问题
如何让“在 if (//condition) 结束时”代码先转到“foreach”?
编码
// *** создаю DataTable
dt_028 = new DataTable();
// *** Добавляю поля в DataTable
// поле Автоинкремент
workColumn = dt_028.Columns.Add("ID", typeof(Int32));
workColumn.AutoIncrement = true;
workColumn.AutoIncrementSeed = 1;
workColumn.AutoIncrementStep = 1;
// поля DataTable
dt_028.Columns.Add("pole_name_1", typeof(String));
dt_028.Columns.Add("pole_name_2", typeof(String));
dt_028.Columns.Add("pole_name_3", typeof(String));
// *** Отображаю DataTable в dataGridView
dataGridView1.DataSource = dt_028;
当我将 dataGridView 中的光标从倒数第二行移动到最后一行时,“ID”字段中的 AutoIncrement 值增加。
那些。将光标移动到最后一行,但没有添加一行,并且AutoIncrement增加了。
问题
如何仅在添加 dataGridView 行时才增加自动增量,而不仅仅是当光标位于最后一行时?
屏幕
使用
C#
MySql
当向 MySql 表中添加新记录时,RAM 的消耗会增加。
编码
#region *** ЗАПРОС ***
tbl_name = textBox115.Text; // Имя редактируемой таблицы. Пирсваиваем значение переменной
sql_zpr_01 = "SELECT * FROM " + tbl_name; // Строка запроса
#endregion *** ЗАПРОС ***
sqlCom_0 = new MySqlCommand(sql_zpr_01, connMySql_db_2);
sqlCom_0.ExecuteNonQuery();
MySqlDtAdp_0 = new MySqlDataAdapter(sqlCom_0);
#region *** СОЗДАНИЕ ДТ ***
dt_025 = new DataTable();
MySqlDtAdp_0.Fill(dt_025); // -> DataTable
#endregion *** СОЗДАНИЕ ДТ ***
MySqlCommandBuilder commandBuilder = new MySqlCommandBuilder(MySqlDtAdp_0);
int str; // кол. строк в пакете
str = Convert.ToInt32(textBox123.Text); // кол. строк
for (int s = 1; s <= str; s++)
{
name_str = textBox116.Text + "_" + s;
zpch_str = textBox117.Text + "_" + s;
newRow = dt_025.NewRow();
newRow["name"] = name_str;
newRow["zpch"] = zpch_str;
dt_025.Rows.Add(newRow);
}
MySqlDtAdp_0.Update(dt_025);
问题
如何减少消耗的 RAM 量?
我将补充:当使用增加记录时MySqlParameter
不会发生 RAM 消耗。
使用
C#
MySql
可用
表 1 - 可编辑
表 2 - 模板
场景
程序运行时,正在编辑表“表 1”。编辑可以如下:
- 在“表 1”中,条目数为零(即空);- “表 1”中的条目数大于“表 2”中的条目数;
- 在“表 1”中的条目数少于“表 2”中的条目数;
——“表1”中记载的内容与“表2”不同的;
两个表中的列数和名称始终相同。
问题
如何跟踪“表 1”中与“表 2”相关的不一致?
不一致的内容:
- 1.“表1”中的记录数为零(即空);
- 2.“表1”中的条目数大于“表2”中的条目数;
结果,显示表“表
1”的多条记录 - 3.“表1”的记录数少于“表2”;
结果,显示“表2”中的记录,而“表1”中没有
的记录 - 4.“表1”中记录的内容与“表2”不同;
桌子
表 1(可编辑)
+--------+-----------------+-----------------+-----------------+
| ID_ТБЛ| pole_1 | pole_2 | pole_3 |
+--------+-----------------+-----------------+-----------------+
| 1 | pole_1_запись_1 | pole_2_запись_1 | pole_3_запись_1 |
| 2 | pole_1_запись_2 | pole_2_запись_2 | pole_3_запись_2 |
| 3 | pole_1_запись_3 | pole_2_запись_3 | pole_3_запись_3 |
+--------+-----------------+-----------------+-----------------+
表 2 (SBL)
+--------+-----------------+-----------------+-----------------+
| ID_ТБЛ | pole_1 | pole_2 | pole_3 |
+--------+-----------------+-----------------+-----------------+
| 1 | pole_1_запись_1 | pole_2_запись_1 | pole_3_запись_1 |
| 2 | pole_1_запись_2 | pole_2_запись_2 | pole_3_запись_2 |
| 3 | pole_1_запись_3 | pole_2_запись_3 | pole_3_запись_3 |
+--------+-----------------+-----------------+-----------------+
代码执行的结果应该是一行:
'Категор 1', 'Категор 2', 'Категор 3'
输入“类别n”TextBox
值(见屏幕截图)。“类别 n”
的行数不超过 10。
我编写了以下代码来实现此任务:
string crit_2;
int s; // счётчик
int c; // кол. строк
crit_2 = "";
s = 0;
c = textBox7.Lines.Count();
foreach (string str in textBox7.Lines)
{
s++;
if (s == 0) // первая строка
{
crit_2 = crit_2 + "'" + str + "'";
}
if (s > 0) // промежуточные строки
{
crit_2 = crit_2 + "'" + str + "', ";
}
if (s == c) // последняя строка
{
crit_2 = crit_2 + "'" + str + "'";
}
}
richTextBox1.AppendText(crit_2 + "\r\n");
问题
这段代码是否是最佳的并且能够解决这个问题?
或者有更好的方法吗?
截屏
TreeView 创建一个 2-3 层深的树。
如何清除 treeView 以便 treeView 在创建树后返回到其原始状态 - 它变为空?
在程序初始启动时:
1. Mode- initial。
- checkBox1 - 没有复选框;
- textBox2 - 编辑模式;背景颜色为白色;
然后我开始选中/取消选中该框,一切都按照下面描述的场景进行。
必需的脚本。
0. 我启动程序。
1.模式-原创。
- checkBox1 - 没有复选框;
- textBox2 - 阅读模式。背景颜色为灰色;
2.模式——工作。
- checkBox1 - 带有复选标记;
- textBox2 - 编辑模式。背景颜色为白色;
问题。
如何确保在启动程序后有 checkBox1 - 没有复选框,而 textBox2 处于读取模式?
namespace shbl_pust
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// checkBox1.Checked == false - без птички;
// checkBox1.Checked == true - c птичкой;
private void Form1_Load(object sender, EventArgs e)
{
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox checkBox = (CheckBox)sender; // приводим отправителя к элементу типа CheckBox
if (checkBox1.Checked == false)
{
textBox2.ReadOnly = true;
textBox2.BackColor = Color.Gainsboro;
}
else
{
textBox2.ReadOnly = false;
textBox2.BackColor = Color.White;
}
}
private void button8_Click(object sender, EventArgs e)
{
// КОД....
}
使用
MySql
C#
目的
检查输入到表中的数据的唯一性。
场景
1. 代码在数据库表中添加一个ssl_str
类型为/csharp-net-page2.html
Field ssl_str
is indexed 的引用字段:UNIQUE INDEX ssl_str
( ssl_str
)
2. 如果字段中输入了非唯一值,则代码返回错误
MySql.Data.MySqlClient.MySqlException (0x80004005):MySql.Data.MySqlClient.MySqlStream.ReadPacket() 中 MySql.Data.MySqlClient.NativeDriver.GetResult 中键“ssl_str”的重复条目“/csharp-net-page2.html” (Int32& affectedRow, Int64& insertedId) 到 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) 到 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 到 MySql.Data.MySqlClient .MySqlDataReader.NextResult() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior 行为) 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
解决方案
1:如何让 try catch 处理这个特定错误?
那些。如果返回此错误,则将记录添加到另一个表中。
2. 这种方法是否最适合解决确定添加记录的唯一性问题,还是有其他更优的方法?
我使用以下代码在 richTextBox 中格式化消息:
// СООБЩЕНИЕ
richTextBox1.Text += (" СООБЩЕНИЕ " + "\r\n");
// ПОДСВЕТКА
richTextBox1.Select(richTextBox1.Text.IndexOf(" СООБЩЕНИЕ "), " СООБЩЕНИЕ ".Length);
richTextBox1.SelectionBackColor = Color.LimeGreen;
// ПРОКРУТКА
richTextBox1.SelectionStart = richTextBox1.Text.Length;
richTextBox1.ScrollToCaret();
在下一行文本出现在 richTextBox 中后,上一行的格式消失。
问题
1. 如何确保在将新行添加到 richTextBox 时,保留先前行的格式?
使用
MySql 5.7 - x64
这里有张桌子
CREATE TABLE `tst_005_tbl_00` (
`id` INT(11) NULL DEFAULT NULL,
`pl_1` VARCHAR(1000) NULL DEFAULT NULL,
`pl_1_sprch` ENUM('pl_1_1','pl_1_2','pl_1_3','pl_1_4','pl_1_5','pl_1_6') NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
场景
1. 在“pl_1_sprch”字段中,从下拉列表中选择一个值;
2. 在“pl_1”字段中,触发器将新值添加到以逗号分隔的现有值。
问题
1.这个场景是否可以实现?
2. 如果“是”,解决方案大致应该如何?
3、这个问题还有什么办法可以解决?
4、如何保证采集标签的字段数据不重复?
有一个包含以下字段的参考表:-
id;
- 记录的序号(例如 1,2,3,...,n);
- 记录名称;
该目录在数据库中使用。“记录名称”必须有一定的顺序。通过对“记录序列号”
字段
进行排序来提供序列。
SITUATION
编写了一本手册(初始:option-0)。
该目录用于其他表。在工作过程中,需要在链表中间增加一个表项,从而重新分配低于该表项的序号。
问题。
如何解决这个问题呢?
那些。手动重新输入新的序列号,我认为这是不正常的。
还是有另一种方法来解决这种情况?
使用
MySQL 5.7 - x6.4
Open Server - 最新
包含数据库和表格的文件夹首先位于FOLDER 1中。我重新配置了服务器,使 DB 和 tables 文件夹位于FOLDER 2中。
# ISSUE 1
ERROR
导入多个表时:SQL Error (1813): Tablespace '01tst
. 00_tbl_00
' 存在。
我在某处读到该问题可以解决。
删除表01tst
。00_tbl_00
或
DROP TABLE IF EXISTS 01tst
。00_tbl_00
没有帮助
在FOLDER 2 ("...MySQL-5.7-x64\01tst\") 中有一个文件“00_tbl_00.ibd”,似乎其他人没有注意......像“db.opt”,但不是 * .frm. ..
我删除了文件“00_tbl_00.ibd”和“db.opt”(大概)。
问题 1. 解决方案 1(部分)
1. 我导入一个数据库。
2. 程序创建一个包含文件的数据库文件夹:*.ibd 和 db.opt。
3. 给出错误示例“SQL 错误 (1813):表空间‘01tst
.00_tbl_00
’存在。” 或类似的东西。
4. 我从目录中删除了包含导入数据库文件的文件夹,但出现错误。
5. 我重新启动服务器。
6.我办理进口手续。
导入整个表,整个表,但在某些表中不是所有行。大约 10-15% 的行不在导入的表中......哦,好吧......我会耐心等待..
# 问题 2
使用解决方案问题 1。解决方案 1(部分)因此添加了三个数据库。然后错误又开始出现。看屏幕
代码示例
-- --------------------------------------------------------
-- Хост: 127.0.0.1
-- Версия сервера: 5.7.16 - MySQL Community Server (GPL)
-- Операционная система: Win64
-- HeidiSQL Версия: 9.4.0.5125
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- Дамп структуры базы данных tst_rb_mn_02
CREATE DATABASE IF NOT EXISTS `tst_rb_mn_02` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `tst_rb_mn_02`;
-- Дамп структуры для таблица tst_rb_mn_02.002_tst_01_vr_04_tbl_frm1_ssl
CREATE TABLE IF NOT EXISTS `002_tst_01_vr_04_tbl_frm1_ssl` (
`id_tma_ssl` int(11) DEFAULT NULL,
`name_ssl` text,
`url_ssl` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Дамп данных таблицы tst_rb_mn_02.002_tst_01_vr_04_tbl_frm1_ssl: ~3 rows (приблизительно)
/*!40000 ALTER TABLE `002_tst_01_vr_04_tbl_frm1_ssl` DISABLE KEYS */;
INSERT INTO `002_tst_01_vr_04_tbl_frm1_ssl` (`id_tma_ssl`, `name_ssl`, `url_ssl`) VALUES
(1, 'name_ssl_04_tbl_zp_1 ', 'url_ssl_04_tbl_zp_1 '),
(2, 'name_ssl_04_tbl_zp_2 ', 'url_ssl_04_tbl_zp_2 '),
(3, 'name_ssl_04_tbl_zp_3 ', 'url_ssl_04_tbl_zp_3 ');
/*!40000 ALTER TABLE `002_tst_01_vr_04_tbl_frm1_ssl` ENABLE KEYS */;
-- Дамп структуры для таблица tst_rb_mn_02.002_tst_02_vr_07_tbl_frm1_ssl
CREATE TABLE IF NOT EXISTS `002_tst_02_vr_07_tbl_frm1_ssl` (
`id_tma_ssl` text,
`name_ssl` text,
`url_ssl` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Дамп данных таблицы tst_rb_mn_02.002_tst_02_vr_07_tbl_frm1_ssl: ~3 rows (приблизительно)
/*!40000 ALTER TABLE `002_tst_02_vr_07_tbl_frm1_ssl` DISABLE KEYS */;
INSERT INTO `002_tst_02_vr_07_tbl_frm1_ssl` (`id_tma_ssl`, `name_ssl`, `url_ssl`) VALUES
('frmA_A', 'name_ssl_07_tbl_zp_1 ', 'url_ssl_07_tbl_zp_1 '),
('frmA_B', 'name_ssl_07_tbl_zp_2 ', 'url_ssl_07_tbl_zp_2 '),
('frmA_C', 'name_ssl_07_tbl_zp_3 ', 'url_ssl_07_tbl_zp_3 ');
/*!40000 ALTER TABLE `002_tst_02_vr_07_tbl_frm1_ssl` ENABLE KEYS */;
-- Дамп структуры для таблица tst_rb_mn_02.002_tst_03_vr_10_tbl_frm1_ssl
CREATE TABLE IF NOT EXISTS `002_tst_03_vr_10_tbl_frm1_ssl` (
`id_tma_ssl` text,
`name_ssl` text,
`url_ssl` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Дамп данных таблицы tst_rb_mn_02.002_tst_03_vr_10_tbl_frm1_ssl: ~3 rows (приблизительно)
/*!40000 ALTER TABLE `002_tst_03_vr_10_tbl_frm1_ssl` DISABLE KEYS */;
INSERT INTO `002_tst_03_vr_10_tbl_frm1_ssl` (`id_tma_ssl`, `name_ssl`, `url_ssl`) VALUES
('frmA_01', 'name_ssl_10_tbl_zp_1 ', 'url_ssl_10_tbl_zp_1 '),
('frmA_02', 'name_ssl_10_tbl_zp_2 ', 'url_ssl_10_tbl_zp_2 '),
('frmA_03', 'name_ssl_10_tbl_zp_3 ', 'url_ssl_10_tbl_zp_3 ');
/*!40000 ALTER TABLE `002_tst_03_vr_10_tbl_frm1_ssl` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
问题。
1. 如何摆脱错误 - SQL Error (1813)?
2. 如何解决#PROBLEM 2?
如果我没理解错的话,那么一张表在计算机磁盘上所占的体积(大小)是受表类型、字段类型等影响的。
问题
如何计算表格的大小?
有没有用于此目的的计算器?
使用
MySQL 5.7 - x6.4
Open Server - 最新
我想在一台计算机上托管数据库,在另一台计算机上托管服务器
在文件 e:\srw\webopsrvr\modules\database\MySQL-5.7-x64\my.ini
从
innodb_data_home_dir = "e:\srw\webopsrvr\userdata\MySQL-5.7-x64"更改路径
到
datadir="\Server\e\srv\db\webopsrvr\userdata\MySQL-5.7-x64"
并
使用
innodb_data_home_dir = "e:\srw\webopsrvr\userdata\MySQL-5.7-x64"
在
innodb_data_home_dir = "\Server\e\srv\db\webopsrvr\userdata\MySQL-5.7-x64"
重新启动服务器后,路径将返回到其原始位置。
问题
一:如何更改数据库和表的位置路径?
2、MySql这样的库表排列方式(即服务器在1号机,数据库和表在2号机)工作会不会有问题?
由 HeidiSQL使用。
MySql 5.7 x64
在 TINYINT(或 INT)字段中添加(更新)记录时。
添加的数字:100、150..
我收到错误“本应为 1 时更新了 0 行”
CREATE TABLE `tst_001_tb_00` (
`id` INT(11) NOT NULL,
`pl_1_txt` TEXT NULL,
`update_pl_2` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`pl_2_enum` ENUM('Y','N') NULL DEFAULT NULL,
`update_pl_3` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`pl_3_txt` TEXT NULL,
`pl_tinyint` TINYINT(4) NULL DEFAULT NULL,
`pl_int` INT(11) NULL DEFAULT NULL,
INDEX `id` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
问题。
问题是什么?
由 MySQL 使用 - 5.7 - x64
主表 1
CREATE TABLE `trg_02_1_test` (
`id_tbl_02_1` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`cur_datetime_tbl_02_1` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`pol_1_date_tbl_02_1` DATE NULL DEFAULT NULL,
`pol_2_enum_tbl_02_1` ENUM('Y','N') NULL DEFAULT NULL,
`pol_3_longtxt_tbl_02_1` LONGTEXT NULL,
`pol_4_txt_tbl_02_1` TEXT NULL,
`pol_5_int_tbl_02_1` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id_tbl_02_1`)
)
LONGTEXT\r\n'
COLLATE='utf8_general_ci'
ENGINE=MyISAM
ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=7
;
日志表
CREATE TABLE `trg` (
`datetime_log` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`tbl_02_name_log` TEXT NULL,
`id_tbl_02_n_log` INT(11) NULL DEFAULT NULL,
`tbl_02_pol_name_log` TEXT NULL,
`tbl_02_pol_content_log` TEXT NULL
)
LONGTEXT\r\n'
COLLATE='utf8_general_ci'
ENGINE=MyISAM
ROW_FORMAT=DYNAMIC
;
记录触发器
CREATE DEFINER=`root`@`%` TRIGGER `trg_02_1_test_before_update` BEFORE UPDATE ON `trg_02_1_test` FOR EACH ROW BEGIN
INSERT INTO trglog
Set
id_tbl_02_n_log = NEW.id_tbl_02_1,
tbl_02_pol_content_log = NEW.pol_4_txt_tbl_02_1;
END
它应该将几个表中的数据放在日志中。
问题。
如何登录:
在字段中tbl_02_name_log
-替换了发生更新的表的名称;
- 在字段中-替换了发生更新 的字段tbl_02_pol_name_log
的名称;
?