[英]Search a record in database using C#
首先,我是C#的初學者,所以很抱歉(如果不容易解決此問題,但我被阻止了)。
我正在嘗試使用該代碼在數據庫中查找記錄:
public int chercherDansDataSet(string search)
{
DataRow[] foundRows;
String idSearch;
int result = 0;
int idKey = 0 ;
DataTable dt = ds.Tables[0];
string research = "last_name = '"+search+"'";
foundRows = dt.Select(research);
result = foundRows.Length;
if(result == 0)
{
MessageBox.Show("Aucun résultat");
return 1;
}
else
{
DataRow rowBack;
rowBack = foundRows[0];
idSearch = rowBack[0].ToString();
idKey = Int32.Parse(idSearch);
return idKey;
}
}
但是每次嘗試時,都會得到:
沒有找到記錄
(在我的代碼中為法語中的“ AucunRésultat”, if
result == 0
時的result == 0
)
當我調試時,我的數據表不是空的,所以我認為這不是問題:
我的目標是返回搜索到的行的ID。
這是我的數據集的配置,但是我不認為問題出在這里:
private System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
con.Open();
da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
da_1.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
還有Form1Load,其中設置了我的ds:
private void Form1_Load(object sender, EventArgs e)
{
try
{
objConnect = new DatabaseConnection();
conString = Properties.Settings.Default.EmployeeConnectionString;
objConnect.connection_string = conString;
objConnect.Sql = Properties.Settings.Default.SQL;
ds = objConnect.GetConnection;
MaxRows = ds.Tables[0].Rows.Count;
NavigateRecords();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
和我的類“ DatabaseConnection”:
class DatabaseConnection
{
private string sql_string;
private string strCon;
System.Data.SqlClient.SqlDataAdapter da_1;
public string Sql
{
set
{
sql_string = value;
}
}
public string connection_string
{
set { strCon = value; }
}
public System.Data.DataSet GetConnection
{
get { return MyDataSet(); }
}
public DataSet dat_set { get; private set; }
private System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
con.Open();
da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
da_1.Fill(dat_set, "Table_Data_1");
con.Close();
return dat_set;
}
public void UpdateDatabase(System.Data.DataSet ds)
{
System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_1);
cb.DataAdapter.Update(ds.Tables[0]);
}
}
}
首先,您必須將Dataset的聲明移至表單頂部,如全局所示:
public partial class Form1 : Form
{
System.Data.DataSet ds= new System.Data.DataSet();
private void Form1_Load(object sender, EventArgs e)
{
而從你的程序中刪除聲明MyDataSet
然后在你的chercherDansDataSet
功能你肥大使用可變dat_set
而不是ds
:
DataTable dt = dat_set.Tables[0];
代替
DataTable dt = ds.Tables[0];
嘗試在變量中添加“ []”和類似空格的空格:
string research = "[last_name] = '" + search + "'";
foundRows = dt.Select(research);
result = foundRows.Length;
如果您的數據表中沒有“ _”,請嘗試:
string research = "[last name] = '" + search + "'";
我建議您可以使用數據集進行操作,這是示例代碼:
ds = getUserName(); //search using parameterized query and return record found as ds
if (ds.Tables[0].Rows.Count > 0) //if record found more than 1 row, mean doesnt empty
{
return ds;
}
else
{
MessageBox.Show("Aucun résultat");
return 1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.