C# 为什么这不起作用?不执行代码?
我试图让一个文本框自动完成来自数据库的值。当我进行bullet测试时,代码将遍历,直到下面函数中的C# 为什么这不起作用?不执行代码?,c#,stored-procedures,ado.net,autocomplete,sqldatareader,C#,Stored Procedures,Ado.net,Autocomplete,Sqldatareader,我试图让一个文本框自动完成来自数据库的值。当我进行bullet测试时,代码将遍历,直到下面函数中的if语句。有人能告诉我为什么我的代码在那之后不会执行吗 我正在尝试运行以下命令,但它总是在if之前跳出: public AutoCompleteStringCollection AutoCompleate(string dataBase, string procedure) { AutoCompleteStringCollection namesCollection =
if
语句。有人能告诉我为什么我的代码在那之后不会执行吗
我正在尝试运行以下命令,但它总是在if
之前跳出:
public AutoCompleteStringCollection AutoCompleate(string dataBase, string procedure)
{
AutoCompleteStringCollection namesCollection =
new AutoCompleteStringCollection();
SqlDataReader dReader;
SqlCommand cmd = new SqlCommand(procedure, con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
dReader = cmd.ExecuteReader(); // This is the last place my bullet check
// gets before it hop's out!
if (dReader.HasRows == true)
{
while (dReader.Read())
namesCollection.Add(dReader["SystemUser"].ToString());
}
con.Close();
dReader.Close();
return namesCollection;
}
其他信息,但请关注以上内容强>
请询问您是否需要任何信息。:)
呼叫上述人员:
textBoxUser.AutoCompleteMode = AutoCompleteMode.Suggest;
textBoxUser.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBoxUser.AutoCompleteCustomSource =
DatabaseService.Instance.AutoCompleate("AuditIT", "AutoCompleate");
USE [AuditIT]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Allow textboxs to have a autocomplete
ALTER procedure [dbo].[AutoCompleate]
as
Select distinct SystemUser from SchemaAudit
order by SystemUser asc
存储过程:
textBoxUser.AutoCompleteMode = AutoCompleteMode.Suggest;
textBoxUser.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBoxUser.AutoCompleteCustomSource =
DatabaseService.Instance.AutoCompleate("AuditIT", "AutoCompleate");
USE [AuditIT]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--Allow textboxs to have a autocomplete
ALTER procedure [dbo].[AutoCompleate]
as
Select distinct SystemUser from SchemaAudit
order by SystemUser asc
尝试访问数据库时出现未处理的异常。 尝试重构代码,如下所示:
try{
if (dataBase.Length > 0) { procedure = dataBase + ".." + procedure; } //Set procedure to DBNAME..ProcedureName
SqlDataReader dReader;
SqlCommand cmd = new SqlCommand(procedure, con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
dReader = cmd.ExecuteReader(); // This is the last place my bullet check gets before it hop's out!
if (dReader.HasRows == true)
{
while (dReader.Read())
namesCollection.Add(dReader["SystemUser"].ToString());
}
con.Close();
dReader.Close();
}
catch(Exception e)
{
// handle the exception better than me :)
Console.WriteLine(e.Message);
}
在console.WriteLine上放置messagebox或断点,然后查看发生了什么。尝试访问数据库时出现未处理的异常。 尝试重构代码,如下所示:
try{
if (dataBase.Length > 0) { procedure = dataBase + ".." + procedure; } //Set procedure to DBNAME..ProcedureName
SqlDataReader dReader;
SqlCommand cmd = new SqlCommand(procedure, con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
dReader = cmd.ExecuteReader(); // This is the last place my bullet check gets before it hop's out!
if (dReader.HasRows == true)
{
while (dReader.Read())
namesCollection.Add(dReader["SystemUser"].ToString());
}
con.Close();
dReader.Close();
}
catch(Exception e)
{
// handle the exception better than me :)
Console.WriteLine(e.Message);
}
在console.WriteLine上放置messagebox或断点,然后查看发生了什么。如何定义
SqlConnection
con
?如果它“跳出”,则表示抛出了异常。您是否尝试过在调试器中运行代码?您是否在此代码之外使用异常处理程序?@AlexR。con=newsqlconnection(Properties.Settings.Default.DBConnectionString.ToString());连接字符串可以工作,其他函数也可以这样做:)再次投票通过调试器运行它。返回的特定异常是什么?似乎不是自动完成的正确方式,为什么不缓存记录并执行自动完成?如何定义SqlConnection
con
?如果它“跳出”,则表示抛出了异常。您是否尝试过在调试器中运行代码?您是否在此代码之外使用异常处理程序?@AlexR。con=newsqlconnection(Properties.Settings.Default.DBConnectionString.ToString());连接字符串可以工作,其他函数也可以这样做:)再次投票通过调试器运行它。返回的特定异常是什么?似乎不是自动完成的正确方式,为什么不缓存记录并进行自动完成?