小编C-P*_*uru的帖子

如何从 Sql 表中检索 DataColumn.DefaultValue?

有没有办法使用 ado.net 从 Sql 数据库中确定列的默认值?

我尝试使用SqlDataAdapter'sFillSchema方法:

 using (SqlDataAdapter adapter = new SqlDataAdapter()) {
    adapter.SelectCommand = myConnection.CreateCommand();
    adapter.SelectCommand.CommandType = CommandType.Text;
    adapter.SelectCommand.CommandText = "SELECT * FROM myTable";
    DataTable table = new DataTable();
    adapter.Fill(table);
    adapter.FillSchema(table, SchemaType.Mapped);
 }
Run Code Online (Sandbox Code Playgroud)

当我检查DataColumns中的 时DataTable,我可以确定一列是否为AutoIncrement,并且可以使用该AllowDBNull属性确定它是否允许空值。但是,DefaultValue(对于我知道有默认值的列)总是null.

我考虑过:

DataTable schemaTable = null;
using (SqlDataReader reader = adapter.SelectCommand.ExecuteReader(CommandBehavior.SchemaOnly)) {
   schemaTable = reader.GetSchemaTable();
   reader.Close();
}
Run Code Online (Sandbox Code Playgroud)

DefaultValue不包含在架构中。

那么......我怎样才能得到一列的DefaultValue

.net c# ado.net

5
推荐指数
1
解决办法
5127
查看次数

使用C#和SMO,如何将备份设备添加到SQL Server?

我知道如何使用C#和SMO在SQL Server上创建文件备份:

public void BackupDatabase(Microsoft.SqlServer.Management.Smo.Server server, 
                               string databaseName, string backupFilename,
                               string backupName, string backupDescription) {

 Backup backup = new Backup();
 backup.Devices.AddDevice(backupFilename, DeviceType.File);
 backup.Database = databaseName;
 backup.Action = BackupActionType.Database;
 backup.BackupSetDescription = backupDescription;
 backup.BackupSetName = backupName;
 backup.Incremental = false;
 backup.LogTruncation = BackupTruncateLogType.Truncate;
 backup.Initialize = true; // supposed to overwrite
 backup.SqlBackup(server);
}
Run Code Online (Sandbox Code Playgroud)

我不知道(并且找不到)的是如何将文件BackupDevice添加到SQL服务器.

c# sql-server smo

5
推荐指数
1
解决办法
2399
查看次数

update语句中的Auto Increment导致大表上的重复值

我需要使用以下代码重新编号表中的行,这些代码来自You've Been Haacked博客文章:

DECLARE @counter int
SET @counter = 0
UPDATE #myTable
SET @counter = ID = @counter + 1
Run Code Online (Sandbox Code Playgroud)

这可以很好地使用几个记录到几千个,但是当我在具有250K +记录的表上的SQL Server 2012(64位)实例上运行它时,我最终得到许多重复项(ID#1出现12次).总之,大约有27K条记录具有重复值.奇怪的是,大约19K有正好12个欺骗(我机器上的处理器数量相同).

重复的原因是什么?

t-sql sql-server sql-server-2012

5
推荐指数
1
解决办法
401
查看次数

如何在 Mac 上的终端中运行 python?

我对编程非常陌生,事实上我现在正在尝试学习 Python 作为第一语言。我发现Google有一个python课程,它说要从python的网站下载python 2,我就这么做了,现在我意识到苹果已经在我的mac上安装了python。不管怎样,我还必须从谷歌下载一些练习,并尝试在终端中运行一些代码,这就是我遇到麻烦的地方,并且确实需要一些见解。

首先,课程中提到只需python在终端中输入 , 即可开始使用 python 进行编码(我不知道这是否是这样说的,或者这是否只是让您能够运行 python 代码?)

然后,它说输入:python hello.py

应该返回:Hello World

然而,我不断得到的是:

语法错误:语法无效

我真的不知道从这里到哪里去,我在想也许是因为我在已经安装了 python 的情况下再次下载了 python,如果是的话?

python macos

5
推荐指数
1
解决办法
6万
查看次数

从Web浏览器控件中删除滚动条

如何使用VB6从Web浏览器控件中删除滚动条?

vb6

4
推荐指数
2
解决办法
6604
查看次数

使用SMO更改SQL Server数据库默认位置

我使用以下代码更改服务器数据库的默认位置(SQL Server保留新数据库文件和日志文件的位置):

using Microsoft.SqlServer.Management.Smo;

Server smoServer = new Server(new ServerConnection(server, username, password));
server.DefaultFile = newPath;
server.Alter();
server.Refresh();

// Now create a database in the new location
Database smoDatabase = new Database(smoServer, database);
smoDatabase.Create();
smoServer.Refresh();
Run Code Online (Sandbox Code Playgroud)

这是我的问题:我可以查看SQL Server Management Studio,并看到数据库默认位置的服务器属性已更改为newPath.但是,当我使用SMO创建新数据库时,将在旧路径中创建新数据库和日志文件.

一旦我重新启动SQL Server实例,SMO代码就会在新路径中创建数据库/日志文件.

任何想法为什么我得到这种行为?

编辑:一个建议是,在重新启动Sql Server实例之前,实际上不会发生更改.但是,如果我打开SSMS并在实例上创建一个新数据库,它将在新路径中创建,而不必重新启动.

c# sql-server smo sql-server-2008

4
推荐指数
1
解决办法
3704
查看次数

OpenFileDialog的初始目录

文件对话框必须打开关闭之前使用的最后一个目录位置,但我不知道如何执行此操作.我的同事只给我看了一个单词的例子,当你单击"文件"它显示最后使用的文件时,他告诉我使用寄存器或INI文件,这是我以前从未使用过的.

这是我正在使用的代码:

string f_sOudeLocatie = @"D:\path\is\classified";

private void btBrowse_Click(object sender, EventArgs e)
{
    OpenFileDialog fdlg = new OpenFileDialog();
    fdlg.Title = "Zoek de CSV file";
    fdlg.InitialDirectory = f_sOudeLocatie;
    fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*";
    fdlg.FilterIndex = 1;
    fdlg.RestoreDirectory = true;
    if (fdlg.ShowDialog() == DialogResult.OK)
    {
        tbGekozenBestand.Text = fdlg.FileName;
        tbVeranderNaamIn.Text = Path.GetDirectoryName(fdlg.FileName);
        f_sOudeLocatie = Path.GetDirectoryName(fdlg.FileName);
        f_sSourceFileName = fdlg.FileName;
        f_sDestFileName = Path.GetFileName(Path.GetDirectoryName(fdlg.FileName)) + ".csv";
        btOpslaan.Enabled = true;
        tbVeranderNaamIn.ReadOnly = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# openfiledialog winforms

4
推荐指数
1
解决办法
3万
查看次数

如何禁用rowheader的大小调整宽度?

有没有办法禁用行大小的宽度调整DataGridView,而不设置AllowUserToResizeRows为False?

我发现了,row.HeaderCell.Resizable但它是只读的.

c# datagridview

4
推荐指数
1
解决办法
1万
查看次数

如何反转 DataGridView 中的行

我正在使用数据网格,但这些值没有按照我希望的方式显示。我当前的代码如下,我将如何反转行?

string[] strOutput = strLine.Split('_', ',','=');

int totalRows = Convert.ToInt16(strOutput[4]);
int totalCols = Convert.ToInt16(strOutput[5]);
int itemIndex = 8;

for (int i = 0; i < totalCols; i++){ 
    dataGridView1.Columns.Add("Col", "Col");
}
dataGridView1.Rows.Add(totalRows);
for (int i = 0; i < totalRows; i++) { 
    for (int j = 0; j < totalCols; j++) { 
        dataGridView1.Rows[i].Cells[j].Value = strOutput[itemIndex];
         itemIndex += 2;
    }                  
}
dataGridView1.Visible = true;
Run Code Online (Sandbox Code Playgroud)

反转行

c# datagridview winforms

4
推荐指数
1
解决办法
6155
查看次数

如何从VB-6旧版应用程序中启动屏幕键盘程序

我正在尝试从Windows 10-32或Windows 10-64位计算机上的VB-6应用程序中'shell osk.exe'。

在过去,我们仅使用:

Private Sub Command1_Click()
Dim strTemp As String
Dim fso1 As New FileSystemObject
strTemp = fso1.GetSpecialFolder(SystemFolder) & "\osk.exe"

Dim lngReturn As Long
Let lngReturn = ShellExecute(Me.hwnd, "Open", strTemp, vbNullString, "C:\", SW_SHOWNORMAL)

lblReturn.Caption = CStr(lngReturn)

end sub
Run Code Online (Sandbox Code Playgroud)

我们还使用了更简单的“ shell”命令。都不行。

在过去,这种方法效果很好。我们还可以从程序中打开NotePad,msPaint和其他实用程序。我们使用工业触摸屏PC,为方便起见,我们在“设置”页面上放置了一些按钮,以快速访问此类帮助程序。我不想等待该程序,我们的代码具有它自己的“触摸屏键盘”。用户仅在想要在我们的主应用程序之外执行某些工作时才使用Windows OSK。

对于Windows XP,所有这些程序都可以正常打开。现在,对于Windows 10,仅OSK.exe程序将无法启动。查看返回代码,返回的错误是“ 2”-找不到文件(我认为)。但是在c:\ windows \ system32文件夹中查找文件“ osk.exe”以及mspaint.exe和notepad.exe。

是否有一些Windows设置从我的程序中隐藏了真实的osk.exe?

感谢您的任何建议。

vb6 exe windows-10

4
推荐指数
1
解决办法
141
查看次数