Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Textbox.text参数未传递到db连接C#应用程序_C#_Sql_Database_Textbox - Fatal编程技术网

Textbox.text参数未传递到db连接C#应用程序

Textbox.text参数未传递到db连接C#应用程序,c#,sql,database,textbox,C#,Sql,Database,Textbox,我正在使用一个windows应用程序,该应用程序有一个登录页面,用户在其中输入其sql连接凭据用户名和密码。然后他们可以将数据从excel表格上传到db。我遇到的问题是,当用户按下run按钮,开始打开文件和读取数据的过程,然后最终将值传递给DB,当它尝试连接到DB时失败,因为他返回null作为用户名和密码。在将这些值传递到db连接部件时,如何使程序记住这些值 using System; using System.Collections.Generic; using System.Componen

我正在使用一个windows应用程序,该应用程序有一个登录页面,用户在其中输入其sql连接凭据用户名和密码。然后他们可以将数据从excel表格上传到db。我遇到的问题是,当用户按下run按钮,开始打开文件和读取数据的过程,然后最终将值传递给DB,当它尝试连接到DB时失败,因为他返回null作为用户名和密码。在将这些值传递到db连接部件时,如何使程序记住这些值

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
using System.Globalization;
using System.Data.SqlClient;

namespace NewTestDataReader
{
   public partial class DataUploader : Form
{
    public DataUploader()
    {
        InitializeComponent();
    }

    internal string m_susername;
    public string username { get { return this.m_susername; } set { this.m_susername = value; } }
    internal string m_spassword;
    public string password { get { return this.m_spassword; } set { this.m_spassword = value; } }

   private void RunButton_Click(object sender, EventArgs e)
    {
        Thread oThread = new Thread(new ThreadStart(scan));
        oThread.Start();   
        password = userPasswordInputTextBox.Text;
        username = userNameInputTextBox.Text;
    }
    private void scan()
    {
        ///scans the file and goes to FileReader function in separate   TestDataReader.cs file
     }
  }
}

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Data.SqlClient;
 using System.Data;
 using System.IO;
 using System.Text.RegularExpressions;
 using Excel = Microsoft.Office.Interop.Excel;

 namespace TestDataReader 
{
public class SheetOneDataReader : DataUploader
{
  //parameters it reads from the excel sheet
    internal string m_sName;
    public string Name { get { return m_sName; } set { m_sName = value; } }

    internal string m_sAddress;
    public string Address{ get { return m_sAddress; } set { m_sAddress = value; } }

public void SaveSheetOneDataToDB()
    {
       SqlCommand cmd = new SqlCommand("UL_ExcelFirstSheetData");
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 50).Value = this.Name;
        cmd.Parameters.Add("@Address", SqlDbType.NVarChar, 50).Value = this.Address;

      String connectionString;  
       SqlConnection cnn;        
        connectionString = "data source = 10.5.200.300";
        connectionString += ";initial catalog = Excel_data" + ";Persist Security Info=True";
        **connectionString += ";user id=" +  username;  //returns null 
        connectionString += ";password=" + password;   //returns null**
         cnn = new SqlConnection(connectionString);
        try
        {
            cnn.Open();
        }
        catch
        {}         
    }
}

 public class FileReader
  {
      public static bool ReadFile(FileInfo oInfo)
    {
        try
        {
          //goes to SheetOneDataReader on top
           SheetOneDataReader oDataSheetOne = new SheetOneDataReader();
           oDataSheetOne.Name =  //values from excel sheet
           oDataSheetOne.Address = //values from the excel sheet
           oDataSheetOne.SaveSheetOneDataToDB();

        }
    }
 }
}

username
password
属性属于您在
SheetOneDataReader
中继承的类
DataUploader
。您可以在
RunButton\u单击
DataUploader
下设置这些属性的值。当您继承该类时,它将使用null重新初始化这两个属性,而不会保留您在其他类中指定的值

而是在
SheetOneDataReader
类中为以下属性设置值,这就是您需要它们连接到数据库的地方

password = userPasswordInputTextBox.Text;
username = userNameInputTextBox.Text;

或者您可能不得不求助于其他状态管理方式,如
会话
视图状态

这是什么类型的应用程序?windows/web/mobile?这是我第一次看到这样完全混乱的代码,当您调用RunButton\u Click和调用SaveSheetOneDataToDB时,我们没有看到连接。根据此示例,您没有执行命令,也没有正确处理连接,这段代码是否直接来自您的应用程序?@csensoft这是一个windows应用程序我厌倦了在SheetOneDataReader中添加属性,但当我使用这些行设置值时,它会抱怨有关UserPasswordInputExtBox的值。这就是为什么我试图在DataUploader中设置它。它说“UsernameInputExtBox”名称在当前数据库中不存在context这是因为
SheetOneDataReader
不能直接访问
表单
控件。
SheetOneDataReader
是一个单独的
.cs
文件继承
DataUploader
?另一种方法是分配
会话[“username”]=userNameInputTextBox.Text从您可以访问textbox控件的任何类,并在您需要的其他地方使用它。如果您不想这样做,那么最好构造您的类,以便在它们之间共享成员,因为每个请求都会创建一个新的类实例。我刚刚在DataUploader内部静态字符串m_susername中声明了它;公共静态字符串用户名{get{return m_susername;}set{m_susername=value;}}内部静态字符串m_spassword;公共静态字符串密码{get{return m_spassword;}set{m_spassword=value;}}},我可以通过DataUploader.password调用它来保存SheetOneDataToDB您可以使用静态变量来实现这一点。这些变量将在所有请求之间共享,而与客户端无关。我很怀疑那是你想要的。