小编Ste*_*eve的帖子

DataAdapter不需要打开数据库连接吗?

我尝试在C#.net中使用DataAdapter.我仍然不了解DataAdapter.

我阅读了很多关于DataAdapter和DataReader的文章和博客.

我了解DataAdapter会在需要时自动打开和关闭数据库.

但,

//conn.Open();
AdsDataAdapter da;
da = new AdsDataAdapter("Select * from Test", conn);
AdsCommandBuilder cb;
cb = new AdsCommandBuilder(da);

DataSet ds = new DataSet();
da.Fill(ds, "Test");

DataRow newrow = ds.Tables["Test"].NewRow();
newrow["Name"] = "How about";
ds.Tables["Test"].Rows.Add(newrow);
da.Update(ds, "Test");
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我收到一条错误消息,提示"连接必须打开".

为什么适配器无法自动打开连接?

并且,我想使用insertCommand插入数据(对于此测试,我打开了连接).

da.InsertCommand = new AdsCommand("INSERT INTO test (NAME) values('Insert Test #1')", conn);
//da.InsertCommand.ExecuteNonQuery(); // it works
da.Update(ds,"Test"); //but it does not works.
Run Code Online (Sandbox Code Playgroud)

很多例子使用Adapter.Update(),但对我来说,它不起作用:(

没有错误,也没有插入.

并使用da.InsertCommand.ExecuteNonQuery(); 而不是Update(),它的工作原理.

我究竟做错了什么?

谢谢!

c# asp.net advantage-database-server dataadapter

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

switch语句中的变量初始化问题

我所拥有的是简单的switch语句

Control myControl;
switch(x)
{
     case TabType.Edit:
     {
         myControl= ...;
     }

     case TabType.View:
     {

         myControl= ...;
     }
 }

 myPageView.Controls.Add(myControl);
Run Code Online (Sandbox Code Playgroud)

在这种情况下编译器告诉我

在访问之前,可能无法初始化局部变量myControl

那么,避免这种情况的最佳方法是什么?

一种选择是在switch语句之前初始化myControl.但在这种情况下,我再做一次不必要的初始化.

情况1:

Control myControl = null;
switch(x)
{
     case TabType.Edit:
     {
         myControl= ...;
     }

     case TabType.View:
     {

         myControl= ...;
     }
 }

 myPageView.Controls.Add(myControl);
Run Code Online (Sandbox Code Playgroud)

下一个选项是改变第二种情况default.之后编译器将"理解"myControl无论如何都将被初始化并且不会抛出异常.

案例2:

Control myControl;
switch(x)
{
     case TabType.Edit:
     {
         myControl= ...;
     }

     default:
     {

         myControl= ...;
     }
 }

 myPageView.Controls.Add(myControl);
Run Code Online (Sandbox Code Playgroud)

但是,这种情况看起来并不那么好,是因为增加了一些新特性,以我的枚举后它将为所有其他类型的默认参数进行(开发者可以很容易忘记改变这里的代码,也可以是没有必要的初始化myControl其他枚举类型) .

在这种情况下,最好的方法是什么?

.net c# language-agnostic switch-statement

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

在意大利语键盘上的Visual Studio 2017上无法打印}

当我按CTRL+ALT+SHIFT+]意大利语键盘上的键盘快捷键添加一个封闭的大括号时,Visual Studio会选择我的代码块而不是打印它.我已经尝试重置Visual Studio上的键盘映射但无济于事.

其他程序没有问题.我该如何解决这个问题?

visual-studio visual-studio-2017

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

将HelpLibrary移动到其他位置

我有一个SSD作为系统驱动器(C :),它是一个真正的救星,但是这里的免费空间是一个超值,所以我希望保持非必要的文件远离这个驱动器.
其中一个主要的"eater"是本地模式中使用的VisualStudio帮助库.
我在网上搜索过,但没有运气,如何将这个位置(C:\ programdata\Microsoft\HelpLibrary)移动到普通硬盘上的不同路径(例如D:\ HelpLibrary).
有一种方法可以使用Visual Studio执行此操作,或者我们需要使用一些注册表或配置技巧?

visual-studio-2010 visual-studio

5
推荐指数
2
解决办法
2681
查看次数

如何使用mingw32-gcc编译器以编程方式从ac#代码编译ac代码

我想以编程方式从c#编译C代码.我正在尝试,但我还没有找到任何解决方案.这是我的代码.

try {
    var info = new ProcessStartInfo {
        FileName = "cmd.exe",
        Arguments = "mingw32-gcc -o a Test.c"
    };
    var process = new Process { StartInfo = info };
    bool start = process.Start();

    process.WaitForExit();
    if (start) {
        Console.WriteLine("done");
    }
} catch (Exception) {
    Console.WriteLine("Not done");
}
Run Code Online (Sandbox Code Playgroud)

我使用Windows 7 VS2010和我已经安装的mingw32-gcc和我的的mingw32-gcc的环境变量是C:\ Program Files文件\代码块\ MinGW的\ BIN 任何帮助将不胜感激.提前致谢.

c# c#-4.0

5
推荐指数
2
解决办法
1820
查看次数

SaveAs2 For Word 2010无法与使用Word 2007的客户端PC一起使用

我已经开发了一个安装了Office 2010 Professional的VB.Net(VS2010)的WinForm应用程序,它是64位Windows 7平台.该程序打开.doc和.rtf格式文档,并尝试以htm格式保存它.我正在使用以下命令:

Dim sFilePath as String ="C:\ ABC\file.doc"

        Dim oApp As New Microsoft.Office.Interop.Word.Application
        Dim oDoc As New Microsoft.Office.Interop.Word.Document
        Dim sTempFileName As String = System.IO.Path.GetTempFileName()
        oDoc = oApp.Documents.Open(sFilePath)
        oApp.Visible = False
        oDoc = oApp.ActiveDocument
        oDoc.SaveAs2(sTempFileName, FileFormat:=WdSaveFormat.wdFormatHTML,CompatibilityMode:=Microsoft.Office.Interop.Word.WdCompatibilityMode.wdWord2007)
        oDoc.Close()
        oApp.Quit()
        oDoc = Nothing
        oApp = Nothing
Run Code Online (Sandbox Code Playgroud)

开发和运行在开发PC上一切顺利,但是当我将其发布用于离线安装,并将其部署在具有带Office 2007的Windows XP的客户端PC上时,它会在oDoc.SaveAs2行上出错,并且程序崩溃.我已经google了足够但无法找到解决方案.有人请尽快帮助我

vb.net ms-word ms-office visual-studio-2010

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

cmd.ExecuteNonQuery的i整数值从0开始为-1

这里我动态地在数据库中创建表.用户输入姓名作为他的愿望并选择语言radiobutton.所以问题是在执行cmd.ExecuteNonQuery之后,i整数从0开始变为-1.并且表明该表无法创建但是当我去数据库时它已经成功创建了.请让我知道我在哪里做错了.Thanx提前!!

protected void btnpaper_Click(object sender, EventArgs e)
    {
        try
        {                
                string conn = ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString;
                SqlConnection con = new SqlConnection(conn);
                con.Open();
                char[] arr = new char[] {'n','g','l','i','s','h'};
                string str = "CREATE TABLE " + Label1.Text.Trim() + 
                             txtpaperset.Text.Trim()+ rbtnEng.Text.TrimEnd(arr) +
                             "(" + "quesNo int NOT NULL PRIMARY KEY, " + 
                             "question varchar(1000) NOT NULL," + 
                             "ansA varchar(500) NOT NULL, " + 
                             "ansB varchar(500) NOT NULL, " + 
                             "ansC varchar(500) NOT NULL, " + 
                             "ansD varchar(500) NOT NULL, " + 
                             "rightAns varchar(50) NOT …
Run Code Online (Sandbox Code Playgroud)

c# asp.net sqlcmd

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

SQL Server 清除内存

是否可以从 SQL Server 填充的数据中清除 RAM 内存?

是否有任何程序或选项可以做到这一点?

sql sql-server

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

使用linq检查树的长度

嗨,我说我有以下类型的树

public class Element
{
    public List<Element> element;
}
Run Code Online (Sandbox Code Playgroud)

让我们说树的根是

Element root = GetTree();
Run Code Online (Sandbox Code Playgroud)

我知道可以使用递归来检查这棵树的长度,但是这可以使用linq来检查这棵树的长度吗?

c# linq tree

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

使用具有特定精度的十进制作为 Dapper 的输出参数

我正在评估 Dapper 作为自定义和繁琐代码的替代品,到目前为止,一切都非常好,很有前途。但是今天早上我偶然发现了动态参数的问题,无法找到解决方案。

存储过程计算客户的帐户余额和可用余额,以两个十进制输出参数返回其结果。这些小数在存储过程中声明为 Precision=18 和 Scale=2。此程序与当前的标准方法完美配合。但是在 Dapper 中,我找不到传递这些参数并指定比例的方法,所以我得到的只是十进制值的整数部分。

using (IDbConnection connection = OpenConnection())
{
    var args = new DynamicParameters(new { custID = customerID});

    // No way to set the scale here?
    args.Add("@accnt", dbType: DbType.Decimal, direction: ParameterDirection.Output);
    args.Add("@avail", dbType: DbType.Decimal, direction: ParameterDirection.Output);

    var results = connection.QueryMultiple("Customer_CalcBalance", args, commandType:CommandType.StoredProcedure);
    decimal account = args.Get<decimal>("@accnt");
    decimal availab = args.Get<decimal>("@avail");
}
Run Code Online (Sandbox Code Playgroud)

这是问题,有没有办法传递十进制输出参数的比例?或者有一种不同的方法来实现我的目标来取回精确的十进制值?

c# dapper

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