哎,学了半年的C#,弄了程序忙活了大半天,结果老是错误,请教 这段代码哪错了,代码如下: private void button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\duyu.mdb");
OleDbCommand ocomd1 = new OleDbCommand();
ocomd1.Connection = conn;
ocomd1.CommandText = ("select mima from duyu where name= "+textBox2 .Text+"");
conn.Open();
Form Form2 = new Form();
try
{
if (textBox2.Text == ocomd1.ExecuteScalar().ToString())
{
Form2.Show();
this.Hide();
}
else
{ MessageBox.Show("密码错误"); }
}
catch (Exception ex)
{
MessageBox.Show("错误:因" + ex.Message + ",无法执行:");
return;
}
conn.Close();在运行时提示:“错误:至少有一个参数未被指定值,无法执行"
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\duyu.mdb");
OleDbCommand ocomd1 = new OleDbCommand();
ocomd1.Connection = conn;
ocomd1.CommandText = ("select mima from duyu where name= "+textBox2 .Text+"");
conn.Open();
Form Form2 = new Form();
try
{
if (textBox2.Text == ocomd1.ExecuteScalar().ToString())
{
Form2.Show();
this.Hide();
}
else
{ MessageBox.Show("密码错误"); }
}
catch (Exception ex)
{
MessageBox.Show("错误:因" + ex.Message + ",无法执行:");
return;
}
conn.Close();在运行时提示:“错误:至少有一个参数未被指定值,无法执行"
解决方案 »
- 关于操作文本文件遇到的问题
- 值传递的问题。。。
- 信息显示
- c#数据结构的问题.
- asp.net 点击服务器按钮 不触发后台事件解决方法
- 两个exe如何实现共同使用的内存数据
- private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
- 如何获取程序所在磁盘的SID号?
- Aspose.Words转换word为swf格式在线预览,查看器应用程序初始化的问题。
- 我用wcf写了一个文件上传的程序,提示被占用
- 关于副窗口删除数据主窗口自动刷新问题
- 求TEXTBOX控件中只能输入50的倍数 而且是初始化时自动生成50的倍数 不能是负的
点登陆进入Form2前,C#中并没有提示哪句话错误,是运行的时候MessageBox给出的
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\duyu.mdb");
OleDbCommand ocomd1 = new OleDbCommand();
ocomd1.Connection = conn;
ocomd1.CommandText = ("select mima from duyu where name= "+textBox2 .Text+"",conn);
conn.Open();
Form Form2 = new Form();
try
{
if (textBox2.Text == ocomd1.ExecuteScalar().ToString())
{
Form2.Show();
this.Hide();
}
else
{ MessageBox.Show("密码错误"); }
}
catch (Exception ex)
{
MessageBox.Show("错误:因" + ex.Message + ",无法执行:");
return;
}
conn.Close();
ocomd1.CommandText = ("select mima from duyu where name= '"+textBox2.Text+"'",conn);
name 是access数据库中的,文本类型
conn.Open(); 然后呢,是否加到try语句中的if里面后,又提示:”因.ExecuteScalar已打开可用连接,连接的当前状态已关闭,无法执行“
,,急
文本类型少引号
你要考虑到你的where子句里是传的参数,传参应该用''引起来.
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\duyu.mdb");
OleDbCommand ocomd1 = new OleDbCommand();
ocomd1.Connection = conn;
ocomd1.CommandText = ("select mima from duyu where name= "+textBox2 .Text+"");
conn.Open();
Form Form2 = new Form();
try
{
if (textBox2.Text == ocomd1.ExecuteScalar().ToString())
{
Form2.Show();
this.Hide();
}
else
{ MessageBox.Show("密码错误"); }
}
catch (Exception ex)
{
MessageBox.Show("错误:因" + ex.Message + ",无法执行:");
return;
}
finally
{
conn.Close();
}
}
SqlCommand com = new SqlCommand("select count(*) from tbl_user where name='"+textBox1.Text.Trim()+"' and pass='"+textBox2.Text.Trim()+"'",con);
con.Open();
int i=(int)com.ExecuteScalar();
con.Close();
if (i != 0)
{
Form1 f1 = new Form1();
f1.ShowDialog();
}else if(i==0)
{
MessageBox.Show("密码错误");
}
或者如下:
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=f:\\duyu.mdb");
OleDbCommand ocomd1 = new OleDbCommand();
ocomd1.Connection = conn;
ocomd1.CommandText = ("select mima from duyu where name= "+textBox2 .Text+"");
if(conn.State == System.Data.ConnectionState.Closed)
{
conn.Open();
}
Form Form2 = new Form();
try
{
if (textBox2.Text == ocomd1.ExecuteScalar().ToString())
{
Form2.Show();
this.Hide();
}
else
{ MessageBox.Show("密码错误"); }
}
catch (Exception ex)
{
MessageBox.Show("错误:因" + ex.Message + ",无法执行:");
return;
}
finally
{
if(conn.State== System.Data.ConnectionState.Open)
conn.Close();
}
}
上面的写法就不会报数据库连接已打开的错误了```
这个字符串有问题了```你查下连你这个数据库要用什么字符串``
ExecuteScalar()返回是首行首列,是不是你的TextBox里写的东西啊?
ocomd1.CommandText = ("select mima from duyu where name= '"+textBox2 .Text+"'");好像是缺少一个CommandType没有指定
差单引号,如果还有错误,添加断点调试下。看具体错在哪!
----if (textBox2.Text == ocomd1.ExecuteScalar().ToString())----
上面两条语句均有textBox2.Text,第一次出现的textBox2.Text是指用户名,第二次出现的textBox2.Text是用户密码,这是怎么回事?我有点看不懂了……
改成OleDbCommand cmd = conn.CreateCommand();就ok了,我测试过了
一:在这一句代码中ocomd1.CommandText = ("select mima from duyu where name= "+textBox2 .Text+"");所用的textBox2.Text 是用户登陆的密码控件,而在下面的if (textBox2.Text == ocomd1.ExecuteScalar().ToString())
{
Form2.Show();
this.Hide();
}
中同样用到了textBox2.Text,这里是指的用户名,,重复了就当然错的啦!!!~~~~上面有位朋友发现的了,,
二:conn.Open(); 这句代码应该将其放到try catch 语句中,具体就放在if语句上面;否则在运行的时候就会MessageBox中提示语句异常。我也不知道是什么意思,希望那位补充一下..........三:这个是我一时疏忽,在access数据库中,把name和mima这两个未放置在字段中,也就是主键不是他们两个中的任何一个,或者他两个不是字段(要怎么才说得清楚啊....) 在运行时MessageBox中提示无法连接,或不能指定连接等。
这里是 我做C#程序中所遇到的问题,也希望对在编程道路以及探索C#的朋友有所帮助,thanks!!