- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在创建注册表单,我必须检查电子邮件是否有效以及是否已在我的数据库中使用。我想出了一种方法,但我的代码有错误。如果它显示“有问题”并且在我尝试使用新的电子邮件地址后,DataReader 出现错误,如果我直接使用新的电子邮件地址,它会在 ExecuteNonQuery
处显示错误。有什么想法吗?
我验证电子邮件地址的方法可以单独使用。谢谢。
public bool IsValidEmail(string emailadress)
{
try
{
MailAddress m = new MailAddress(emailadress);
return true;
}
catch
{
return false;
}
}
public bool good(string emailadress)
{
SqlCommand cmd = new SqlCommand("SELECT Email FROM Clients", con);
SqlDataReader dr = cmd.ExecuteReader();//error is here
while (dr.Read())
{
if (dr[0].ToString() == textBox6.Text)
{
return false;
}
}
return true;
}
private void button1_Click(object sender, EventArgs e)
{
if (IsValidEmail(textBox6.Text) && good(textBox6.Text))
{
SqlCommand cmd1 = new SqlCommand("insert into Clienti(Name , Prename , Adress , Pass , Email ) values (@name , @prename ,@adress , @pass , @email)", con);
cmd1.Parameters.AddWithValue("name", textBox1.Text);
cmd1.Parameters.AddWithValue("prename", textBox2.Text);
cmd1.Parameters.AddWithValue("adress", textBox3.Text);
cmd1.Parameters.AddWithValue("pass", textBox4.Text);
cmd1.Parameters.AddWithValue("email", textBox6.Text);
cmd1.ExecuteNonQuery(); // error happens here
cmd1.Dispose();
MessageBox.Show("success");
}
else
MessageBox.Show("something went wrong");
}
最佳答案
SqlDataReader 在使用后应该关闭,否则它会保持连接锁定,并且在您关闭它之前您无法使用该连接。
但是,您不需要 SqlDataReader 来发现您是否已经注册了电子邮件地址
public bool good(string emailadress)
{
string query = @"IF EXISTS(SELECT 1 FROM Clients WHERE Email = @email)
SELECT 1 ELSE SELECT 0";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.Add("@email", SqlDbType.NVarChar).Value = emailadress;
int result = (int)cmd.ExecuteScalar();
return (result == 1);
}
请记住,像 SqlCommand、SqlDataReader 这样的一次性对象,但最重要的是,SqlConnection 应该在您需要它们的时候创建,并立即处理以释放宝贵的资源。
上面带有当场创建的连接的代码将是:
public bool good(string emailadress)
{
string query = @"IF EXISTS(SELECT 1 FROM Clients WHERE Email = @email)
SELECT 1 ELSE SELECT 0";
using(SqlConnection con = new SqlConnection(....here put your connection string...))
using(SqlCommand cmd = new SqlCommand(query, con))
{
con.Open();
cmd.Parameters.Add("@email", SqlDbType.NVarChar).Value = emailadress;
int result = (int)cmd.ExecuteScalar();
return (result == 1);
}
}
关于c# - 错误 : There is already an open DataReader associated with this Command which must be closed first,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54390056/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我有四个模型类: class Group :event_producer end class PersonalBlog :event_producer end class Event true
将应用程序从Rails 4.2.9升级到Rails 5.2.1。 通过大部分令人讨厌的部分,更新了依赖关系和诸如此类的东西,最终使应用程序在console中运行,现在尝试访问server上的页面。加载
我的 EntityDefinition 中有一个关联: ... class ParentEntityDefinition extends EntityDefinition { ...
我不确定为什么这个关联无效 class Tag < ActiveRecord::Base has_and_belongs_to_many :routes end class Route < Act
我有以下关联。 PropertyOwner 是一个连接模型,它属于一个属性(property),多态地属于一个所有者,在下面的例子中是一个 ForeclosureDefense。一切正常,直到我拥有
我有一份有很多发票的工作,一张发票属于一份工作。我想查询第一张发票在某个日期范围内的工作。我有这个查询: @jobs = Job.joins(:invoices). where("invoices
我有这样的关系:用户可以拥有零只或一只狗,但狗必须属于某人。 # dog.rb class Dog { joins(:dog) } # To get records without a dog,
在我的 Rails 4 应用程序中,我有以下模型: User has_many :administrations has_many :calendars, through: :administrati
我见过的所有示例,包括文档都建议按关联过滤应使用以下语法 [contrived exampled] User.findAndCountAll({ include: [ {
我有一个下拉列表(HTML 选择框),它从这个 MySQL 查询中获取值: "SELECT cdID, cdTitle FROM CD ORDER BY cdID" 然后将结果存储在关联数组中,然后将
我是 Ruby ON Rails 新手,我的应用有 3 个模型 class User < ActiveRecord::Base has_one :user_hobby has_one :user_
我有三个模型,每个模型都有以下关联: class Model1 :model1 # will this work? is there any way around this? end class
我有一个带有帖子和标签的数据库。我想找到的帖子,只包含一个标签与一个特定的TagID,根本没有其他标签。下面的代码可以工作,但它需要服务器手动过滤结果,这将使分页变得困难。有谁有可以做到这一点的直接查
任何人都知道如何避免 PLS-00312 错误? “PLS-00312:位置参数关联可能不遵循命名关联” 我得到这个是因为下面一行: AttachList=> v_est_proc_name||'_E
我有以下工厂定义。 Factory.define :status do |f| end Factory.define :my_status , :parent => :status do |f|
我有 2 个具有 1:M 关联的模型,定义如下: var inventory = sequelize.define("Inventory",{**model definition**}; var tr
假设这个模式: var user = sequelize.define('user', { username: Sequelize.STRING, email: Sequelize.S
我正在使用 Apple 的工具进行应用站点关联验证,该工具位于此处:https://search.developer.apple.com/appsearch-validation-tool 它给了我错
实体\识别 /** * @ORM\Entity * @ORM\Table(name="c_rcgntn") */ class Recognition { /** * @ORM\
我是一名优秀的程序员,十分优秀!