我仍然是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显示“找不到列[用户名]”。 现在我检查了我的用户表,用户名字段在那里有正确的拼写以及所有小字体。那么有人可以解释为什么我收到这条消息?感谢。
答案 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来否定它。