- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
最近我遇到了我创建的 C# 程序抛出异常 Could not find file C:\windows\system32\qbcdb.mdb
的问题。这很奇怪,因为我以前在通过 Advanced Installer 部署我的程序时从未遇到过这个问题。我没有做任何更改,但由于某种原因,此错误不断发生(异常框的屏幕截图 - http://imgur.com/1GLhwmg)。
我不知道在这个问题中包含什么来帮助解释我的问题,所以这是我的 App.config 文件(在网站上阅读它可能与此相关,但同样,我从未有过到目前为止的任何问题):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="QBC.Properties.Settings.qbcdbConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\qbcdb.mdb"
providerName="System.Data.OleDb" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
插入数据库方法:
#region inserts the data into the database
private void InsertData()
{
using (dbConn)
{
dbConn.Open();
using (dbCmd = new OleDbCommand("INSERT INTO members (household_head, birthday, phone, email, address, status, spouse, spouse_birthday, spouse_phone, spouse_email, " +
"anniversary, spouse_status, child1, child1_birthday, child1_email, " +
"child2, child2_birthday, child2_email, child3, child3_birthday, child3_email, child4, child4_birthday, child4_email, child5, child5_birthday, child5_email," +
"child6, child6_birthday, child6_email, child7, child7_birthday, child7_email) " +
"VALUES (@txtBox_householdHead, @txtBox_householdHeadBirthday, @txtBox_householdHeadPhone, @txtBox_householdHeadEmail, @txtBox_householdHeadAddress, @txtBox_householdHeadStatus, " +
"@txtBox_spouse, @txtBox_spouseBirthday, @txtBox_spousePhone, @txtBox_spouseEmail, @txtBox_Anniversary, @txtBox_spouseStatus, " +
"@txtBox_child1, @txtBox_child1Birthday, @txtBox_child1Email, " +
"@txtBox_child2, @txtBox_child2Birthday, @txtBox_child2Email, @txtBox_child3, @txtBox_child3Birthday, @txtBox_child3Email, @txtBox_child4, @txtBox_child4Birthday, @txtBox_child4Email, " +
"@txtBox_child5, @txtBox_child5Birthday, @txtBox_child5Email, @txtBox_child6, @txtBox_child6Birthday, @txtBox_child6Email, @txtBox_child7, @txtBox_child7Birthday, @txtBox_child7Email)", dbConn))
{
try
{
InsertDBParameters(ref dbCmd);
dbCmd.ExecuteNonQuery();
}
catch (OleDbException ex)
{
MessageBox.Show(ex.ToString());
return;
}
finally
{
dbConn.Close();
}
}
MessageBox.Show("Record inserted.");
ClearAll(this);
}
}
#endregion
#region creates the db parameters
private void InsertDBParameters(ref OleDbCommand cmd)
{
foreach (Control c in Controls)
{
if (c is TextBox)
{
listOfTextboxes.Add(new KeyValuePair<string, string>(((TextBox)c).Name, ((TextBox)c).Text));
}
}
for (int i = 0; i < listOfTextboxes.Count; i++)
{
cmd.Parameters.AddWithValue(String.Format("@{0}", listOfTextboxes[i].Key.ToString()), listOfTextboxes[i].Value);
}
}
#endregion
从数据库方法中选择-
#region displays all members in the database
private void MenuViewMembers_Click(object sender, EventArgs e)
{
// hide any controls left that may be left over from another option
HideAllControls(this);
qbcDataGridView.Font = new Font(qbcDataGridView.Font.FontFamily, 10);
qbcDataGridView.Location = new Point(30, 100);
qbcDataGridView.Size = new Size(1500, 500);
dbConn.Open();
DataTable dt = new DataTable();
DbAdapter = new OleDbDataAdapter("select ID, household_head AS head, birthday, phone, email, address, status, spouse, spouse_birthday AS sbirthday, spouse_email AS semail, anniversary," +
" spouse_status AS sstatus," +
"child1, child1_birthday AS birthday1, child1_email AS email1, child2, child2_birthday AS birthday2, child3, child3_birthday AS birthday3, child3_email AS email3, " +
"child4, child4_birthday AS birthday4, child4_email AS email4, child5, child5_birthday AS birthday5, child5_email AS email5," +
"child6, child6_birthday AS birthday6, child6_email AS email6, child7, child7_birthday AS birthday7, child7_email AS email7 from members", dbConn);
DbAdapter.Fill(dt);
for (int i = dt.Columns.Count - 1; i >= 0; i--)
{
if (dt.AsEnumerable().All(row => row[i].ToString() == ""))
{
dt.Columns.RemoveAt(i);
}
}
qbcDataGridView.DataSource = dt;
qbcDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
qbcDataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
qbcDataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dbConn.Close();
Controls.Add(qbcDataGridView);
}
#endregion
在 visual studio 中,它运行良好,但是当我使用高级安装程序为其构建 msi 时,我在尝试从数据库中插入/选择时收到该错误消息。
如果这些信息不够,我很抱歉,我不知道真正需要提供什么来帮助解释我的情况。
谢谢!
最佳答案
首先,C:\windows\system32\不是存储运行时数据的正确位置。这种方法是无效的,因为 Windows 95 已经过时了,即使在那里它也只是因为 FAT 无法阻止这种情况而起作用。特别是该文件夹通过权限和过程受到保护,如 Virtualsiation .这在未来可能只会变得更糟。所以最好不要从它开始。
存储此类数据的“适当”位置是 Special Folders 之一.用户特定的或 Windows 范围的。 ApplicationData 和 CommonApplicationData 应该是最好的地方。
请注意,如果不止一个用户运行该程序(runas、切换用户)并且句柄没有快速释放,那么跨用户位置会让您陷入困境。通常,如果目标是跨用户文件夹,则应假定该目标不可写/只能在短时间内写入。
关于c# - Windows 窗体程序找不到 mdb 文件 (C :\windows\system32\qbcdb. mdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45919453/
程序集,masm 嘿,我写了宏来打印存储在 dane1 段中的 1 字节值。 我将值除以 16,然后将提醒推送到堆栈,直到值==0。然后我弹出提醒将它们转换为 ASCII 码,并打印它们。 有人可以看
我在 Apache Geronimo 2.1.3 上有一个 Web 服务应用程序。 我正在使用 JAX-WS,使用 SOAP 1.1 注释 POJOS。 (使用 Sun JDK 1.5) 各种客户端都
我有一个数据变量,monthArray,它被多个消费者读取,并由单个定期更新程序线程定期更新数据。全部异步。 我已经考虑了这两个选项来安全地执行更新。 ArrayList tempArray
我有一组 3D 体。每个 Body 由 8 个点定义,每个点具有三个坐标。所有的物体都是立方体的或近似立方体的。我想用系统的点栅格“填充”立方体。坐标存储在简单的 data.frames 中。 我开发
我正在处理遗留代码,需要打补丁。 问题:一个古老的应用程序发送错误的 HTTP POST 请求。其中一个参数未经过 URL 编码。我知道这个参数总是排在最后而且我知道它的名字。我现在正尝试在运行在 t
我想在触摸屏幕时移动 sprite body ,但它不能发生...... -(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
这个问题在这里已经有了答案: Can a union be initialized in the declaration? (3 个答案) 关闭 7 年前。 如果它是一个struct那么它就可以完成
我正在尝试获取生成 sigsys 信号的系统调用的地址!但我从 gcc 收到以下错误: gcc emulator.c -fms-extensions error: ‘siginfo_t’ has no
当我使用 Postman 进行 API 调用时,我收到一个 JSON 对象..这是我所期望的。 但是,当我像这样与 Guzzle 进行相同的调用时: $client = new \GuzzleHttp
在编码时,出现了差异。通常在编写简单的方法或构造函数时,我经常使用表达式体技术。但是,当我产生以下内容时: public class Sample : ISample { private r
我正在使用 LibGDX 创建一个新项目。 我想做的是,我将 tmx 文件中的主体加载到工作正常的关卡中。尸体也有一个 Sprite 。 问题是,我想让用户触摸场景中的某些 body 。当他们触摸 b
我的意图:在不使用 union 的情况下循环遍历一个结构的 30 个成员,所有成员都是字符数组类型,每个成员都存储对 itoa 的调用结果。在下面的代码中,我将结构体成员命名为a-z、A-D。在调用函
我必须将我的代码段之一从 C 转换为 java。代码如下。 union commandString{ char commndStr[20]; struct{ char
#include union NumericType { float value; int intvalue; }Values; int main() { Values.va
我在此代码中收到错误: fun num(num:Int):Int { if (num > 0){ print(num % 10) return num / 10
我是一名优秀的程序员,十分优秀!