为什么找不到表格字段?

时间:2016-02-13 19:46:19

标签: c#

我仍然是C#的新手,我正试图从桌面上取一条记录。这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //your UI stuff

    setResult(RESULT_CANCELED);//default 
    //check box setup and save button onclick listener
}


@Override
public void onClick(View v) {
    if(v.getId()==R.id.save_button){
        if (checkBox.isChecked())
            setResult(RESULT_OK);
        else
            setResult(RESULT_CANCELED);//default
        finish();//finish ActivityB and take the result to ActivityA
    }
}

现在当它到达try命令时,它会抛出一个异常,部分MessageBox显示“找不到列[用户名]”。 现在我检查了我的用户表,用户名字段在那里有正确的拼写以及所有小字体。那么有人可以解释为什么我收到这条消息?感谢。

2 个答案:

答案 0 :(得分:1)

DataTable.Select()实际上并不是连接到数据库的检索信息,它只从它假定已经填充的DataTable中的行读取。下面是一个填充DataTable的示例,并避免SQL Injection风险。在此示例中,我的应用程序将连接到名为“MyDatabase”的数据库,然后使用“SomeUser”用户名的过滤器查询Users表。然后它将获得“MyField”字段并将其读入名为someValue的字符串。

    public static void Main()
    {
        string connectionString = "SERVER=MyServer;DATABASE=MyDatabase";
        SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE username = @username");
        cmd.Parameters.Add(new SqlParameter("username", "Someuser"));
        DataSet dataSet = ExecuteDataset(cmd, connectionString);

        DataTable table = dataSet.Tables[0];
        string someValue = table.Rows[0]["MyField"].ToString();
    }


    public static DataSet ExecuteDataset(SqlCommand cmd, String connectionString)
    {
        // Create the SqlConnection, DataAdapter & DataSet
        using (SqlConnection sqlConn = new SqlConnection(connectionString))
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        {
            DataSet dataSet = new DataSet();
            // Fill the DataSet
            cmd.Connection = sqlConn;
            da.Fill(dataSet);

            // Return the dataset
            return dataSet;
        }
    }

答案 1 :(得分:0)

根据提供的代码,您尚未为Users表定义列。如果您在提供的click事件之外声明您的Users表,那么您将通过实例化新的DataTable来否定它。