【问题标题】:c# Data source can not be emptyc#数据源不能为空
【发布时间】:2017-08-28 09:38:34
【问题描述】:

我使用以下代码在单击按钮时将 sqlite 数据库中的一组项目加载到数据网格视图中!当数据库的路径在代码中给出时,数据库连接成功并加载数据。

 public Form1()
        {
            InitializeComponent();
            dbconnection = @" Data Source = D:\SQLite\SQLiteStudio\DB1.db ; version=3 ";
        }

但是当我通过获取路径作为文本框输入来更改代码如下时,会出现错误“数据源不能为空”。使用的文本框名称为dbtext,将上面代码中的相同路径复制粘贴到文本框!

public Form1()
        {
            InitializeComponent();
            dbconnection = @"Data Source="+dbtext.Text+";version=3";
        }

我该如何解决这个问题?

【问题讨论】:

  • dbtext.Text的文字是什么
  • 路径是在什么时候输入到文本框中的?在程序已经开始之后?如果是这样,则该值确实永远不会传递给连接字符串。
  • @AshkanMobayenKhiabani 文本框有测试 D:\SQLite\SQLiteStudio\DB1.db
  • @waka 启动程序后只给出文本

标签: c# sqlite input textbox datasource


【解决方案1】:

问题是你在表单初始化时设置它,文本框仍然是空的,你设置了它的值。

在加载数据的同一按钮的 Click 事件或文本框的 textchanged 事件上设置 dbconnection = @"Data Source="+dbtext.Text+";version=3";

【讨论】:

    【解决方案2】:

    您正在程序的构造函数中设置连接字符串:

    public Form1()
    {
        InitializeComponent();
        dbconnection = @"Data Source="+dbtext.Text+";version=3";
    }
    

    此时TextBox 仍为空,变量dbconnection 将如下所示:

    dbconnection = "DataSource=;version=3";
    

    (在调试器中检查)。

    现在您正试图在您的按钮单击事件上建立连接,但是到哪里呢?相反,您的代码应如下所示:

    priavte void Button1_Click(object sender, EventArgs e)
    {
        dbconnection = "Data Source="+dbtext.Text+";version=3";
        //Do stuff with the connection
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多