调试的一段和数据库有关的小程序

来源:互联网 发布:佳能单反修图软件 编辑:程序博客网 时间:2024/06/09 23:58

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //这个地方和程序代码中不一样,主要是我用的是ACCESS
using System.Drawing;
using System.Text;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;


namespace FriendsReunion.Secure
{
/// <summary>
/// NewUser 的摘要说明。
/// </summary>
public class NewUser : FriendsBase
{
protected System.Web.UI.WebControls.Button btnAccept;
protected System.Web.UI.WebControls.TextBox txtLogin;
protected System.Web.UI.WebControls.TextBox txtPassword;
protected System.Web.UI.WebControls.TextBox txtFName;
protected System.Web.UI.WebControls.TextBox txtLName;
protected System.Web.UI.WebControls.TextBox txtAddress;
protected System.Web.UI.WebControls.TextBox txtPhone;
protected System.Web.UI.WebControls.TextBox txtMobile;
protected System.Web.UI.WebControls.TextBox txtEmail;
protected System.Web.UI.WebControls.RequiredFieldValidator reqLogin;
protected System.Web.UI.WebControls.RequiredFieldValidator reqPassword;
protected System.Web.UI.WebControls.RequiredFieldValidator reqFName;
protected System.Web.UI.WebControls.RequiredFieldValidator ReqLName;
protected System.Web.UI.WebControls.RequiredFieldValidator reqAddress;
protected System.Web.UI.WebControls.RequiredFieldValidator reqEmail;
protected System.Web.UI.WebControls.CompareValidator compBirth;
protected System.Web.UI.WebControls.RegularExpressionValidator regPhone;
protected System.Web.UI.WebControls.RegularExpressionValidator regEmail;
protected System.Web.UI.WebControls.Label lblMessage;
protected System.Web.UI.WebControls.ValidationSummary valErrors;
protected System.Web.UI.WebControls.TextBox txtBirth;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
base.HeaderIconImageUrl = 
Request.ApplicationPath + "/Images/securekeys.gif";
base.HeaderMessage = "Registration Form";
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.btnAccept.Click += new System.EventHandler(this.btnAccept_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnAccept_Click(object sender, System.EventArgs e)
{
if(Page.IsValid)//验证都处于有效状态
{
OleDbConnection con;
string sql;
OleDbCommand cmd;
StringBuilder sb = new StringBuilder();
ArrayList values = new ArrayList();

sb.Append("INSERT INTO User");
sb.Append("(UserID,Login,[Password],FirstName,LastName,");
sb.Append("PhoneNumber,Email,IsAdministrator,Address,");
sb.Append("CellNumber,DateOfBirth)");
sb.Append(
"VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',");
sb.Append("{8},{9},{10})");

values.Add(Guid.NewGuid().ToString());//独一无二
values.Add(txtLogin.Text);
values.Add(txtPassword.Text);
values.Add(txtFName.Text);
values.Add(txtLName.Text);
values.Add(txtPhone.Text);
values.Add(txtEmail.Text);
values.Add(0);

if(txtAddress.Text != string.Empty)
{
values.Add("" + txtAddress.Text + "");
}
else
{
values.Add("Null");
}

if(txtMobile.Text != string.Empty)
{
values.Add("" + txtMobile.Text + "");
}
else
{
values.Add("Null");
}

if(txtBirth.Text != string.Empty)
{
values.Add("" + txtBirth.Text + "");
}
else
{
values.Add("Null");
}

sql = String.Format(sb.ToString(),values.ToArray());
string dbname = Server.MapPath("Friends.mdb");
//execute the query
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + dbname); 
//C:/Documents and Settings/chang/My Documents/Visual Studio Projects/FriendsReunion/Friends.mdb");

//sql = "Insert INTO User(Login,Address) Values('Simson','usa')";
cmd = new OleDbCommand(sql,con);

con.Open();

bool doredirect = true;

try
{
cmd.ExecuteNonQuery();
}
catch
{
//Console.WriteLine("Error:{0}",ie.Errors[0].Message);
doredirect = false;
this.lblMessage.Visible = true;
//this.lblMessage.ForeColor = red;
this.lblMessage.Text =
"Insert couldn't be performed.User name maybe already taken!";
}
finally
{
con.Close();
}

if(doredirect)
Response.Redirect("Login.aspx");
}
}
}
}

 

连接成功了。非常高兴。
数据写不进去,主要是因为SQL语法写的不对。

学会使用VS.NET来查看自己的SQL语句,这个开发环境应该有这么强大的功能来做这个事情。

爽啊。

把新的程序放在这里。

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb; //这个地方和程序代码中不一样,主要是我用的是ACCESS
using System.Drawing;
using System.Text;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;


namespace FriendsReunion.Secure
{
/// <summary>
/// NewUser 的摘要说明。
/// </summary>
public class NewUser : FriendsBase
{
protected System.Web.UI.WebControls.Button btnAccept;
protected System.Web.UI.WebControls.TextBox txtLogin;
protected System.Web.UI.WebControls.TextBox txtPassword;
protected System.Web.UI.WebControls.TextBox txtFName;
protected System.Web.UI.WebControls.TextBox txtLName;
protected System.Web.UI.WebControls.TextBox txtAddress;
protected System.Web.UI.WebControls.TextBox txtPhone;
protected System.Web.UI.WebControls.TextBox txtMobile;
protected System.Web.UI.WebControls.TextBox txtEmail;
protected System.Web.UI.WebControls.RequiredFieldValidator reqLogin;
protected System.Web.UI.WebControls.RequiredFieldValidator reqPassword;
protected System.Web.UI.WebControls.RequiredFieldValidator reqFName;
protected System.Web.UI.WebControls.RequiredFieldValidator ReqLName;
protected System.Web.UI.WebControls.RequiredFieldValidator reqAddress;
protected System.Web.UI.WebControls.RequiredFieldValidator reqEmail;
protected System.Web.UI.WebControls.CompareValidator compBirth;
protected System.Web.UI.WebControls.RegularExpressionValidator regPhone;
protected System.Web.UI.WebControls.RegularExpressionValidator regEmail;
protected System.Web.UI.WebControls.Label lblMessage;
protected System.Web.UI.WebControls.ValidationSummary valErrors;
protected System.Web.UI.WebControls.TextBox txtBirth;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
base.HeaderIconImageUrl = 
Request.ApplicationPath + "/Images/securekeys.gif";
base.HeaderMessage = "Registration Form";
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()

this.btnAccept.Click += new System.EventHandler(this.btnAccept_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void btnAccept_Click(object sender, System.EventArgs e)
{
if(Page.IsValid)//验证都处于有效状态
{
OleDbConnection con;
string sql;
OleDbCommand cmd;
StringBuilder sb = new StringBuilder();
ArrayList values = new ArrayList();

sb.Append("INSERT INTO [User]");
sb.Append("(UserID,Login,[Password],FirstName,LastName,");
sb.Append("PhoneNumber,Email,IsAdministrator,Address,");
sb.Append("CellNumber,DateOfBirth)");
sb.Append(
"VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}',");
sb.Append("'{8}','{9}','{10}')");

values.Add(Guid.NewGuid().ToString());//独一无二
values.Add(txtLogin.Text);
values.Add(txtPassword.Text);
values.Add(txtFName.Text);
values.Add(txtLName.Text);
values.Add(txtPhone.Text);
values.Add(txtEmail.Text);
values.Add(0);

if(txtAddress.Text != string.Empty)
{
values.Add("" + txtAddress.Text + "");
}
else
{
values.Add("Null");
}

if(txtMobile.Text != string.Empty)
{
values.Add("" + txtMobile.Text + "");
}
else
{
values.Add("Null");
}

if(txtBirth.Text != string.Empty)
{
values.Add("" + txtBirth.Text + "");
}
else
{
values.Add("Null");
}

sql = String.Format(sb.ToString(),values.ToArray());
string dbname = Server.MapPath("Friends.mdb");
//execute the query
con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + dbname); 
//C:/Documents and Settings/chang/My Documents/Visual Studio Projects/FriendsReunion/Friends.mdb");

//sql = "Insert INTO User(Login,Address) Values('Simson','usa')";
cmd = new OleDbCommand(sql,con);

con.Open();

bool doredirect = true;

try
{
cmd.ExecuteNonQuery();
}
catch
{
//Console.WriteLine("Error:{0}",ie.Errors[0].Message);
doredirect = false;
this.lblMessage.Visible = true;
//this.lblMessage.ForeColor = red;
this.lblMessage.Text =
"Insert couldn't be performed.User name maybe already taken!";
}
finally
{
con.Close();
}

if(doredirect)
Response.Redirect("Login.aspx");
}
}
}
}

 

测试SQL语句:

INSERT INTO [User]
 (UserID, Login, Password, FirstName, LastName, DateOfBirth, PhoneNumber, 
 CellNumber, Address, Email, IsAdministrator)
VALUES ('sdfadfadfa', 'chang chunhua', 'huliwuya', 'chang', 'chunhua', '1980/4/3', 
 '010-23456789', '13466709278', 'beijing', 'chang_chunhua@hotmail.com', '0')

 

This is the code. The Select works but the Insert doesn't. 
I get this error 
System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement. 
public databaseConn() 




String openCommand = "Provider=Microsoft.Jet.OLEDB.4.0;Data 
Source=D://database//firstSpaceDB.mdb"; 


objConnect = new OleDbConnection(openCommand); 


// 


// TODO: Add constructor logic here 


// 






public void Open() 




objConnect.Open(); 






public void close() 




objConnect.Close(); 






public bool setNewUser(String name, String password) 




Open(); 


String select = "SELECT * FROM users"; 


OleDbCommand objCommand = new OleDbCommand(select, objConnect); 


//declare a variable to hold a DataReader object 


OleDbDataReader objDataReader; 


objDataReader = objCommand.ExecuteReader(); 


while(objDataReader.Read()) 





if(objDataReader.GetString(0).CompareTo(name) == 0) 





objDataReader.Close(); 


close(); 


return false; 






ErrorMessage += objDataReader.GetString(0); 





objDataReader.Close(); 

string strInsert = "INSERT INTO users (userName, password) VALUES ('" + name 
+ "', '" + password + "' ) "; 


ErrorMessage += strInsert; 


try 





// create a new OleDbCommand using the connection object and select 
statement 


objCommand = new OleDbCommand(strInsert, objConnect); 


// execute the SQL statement 


objCommand.ExecuteNonQuery(); 






catch (Exception objError) 




// display error details 


//outError.InnerHtml = "<b>* Error while accessing data</b>.<br />" + 
objError.Message + "<br />" + objError.Source; 


ErrorMessage += objError.ToString(); 


return false; //and stop execution 






objDataReader.Close(); 

close(); 


return true; 



- 隐藏被引用文字 -
- 显示引用的文字 -




 
 2 发件人: Andy Baron - 查看个人资料 
日期: 2002年4月22日(星期一) 上午8时52分 
电子邮件: Andy Baron <Andy_Ba...@msn.com> 
论坛: microsoft.public.dotnet.framework.adonet 
Not yet rated评级: 
显示选项 


答复作者 | 转发 | 打印 | 显示个别帖子 | 显示原始邮件 | 报告滥用行为 | 查找此作者的帖子 


Password is a reserved word. You need to put brackets around it: 

"INSERT INTO users (userName, [password]) . . ." 


 -- Andy 


In message <#P0#FaW6BHA.1384@tkmsftngp02> Mike wrote: 



- 隐藏被引用文字 -
- 显示引用的文字 -

>This is the code. The Select works but the Insert doesn't. 
>I get this error 
>System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement. 
>public databaseConn() 

>{ 


>String openCommand = "Provider=Microsoft.Jet.OLEDB.4.0;Data 
>Source=D://database//firstSpaceDB.mdb"; 


>objConnect = new OleDbConnection(openCommand); 


>// 


>// TODO: Add constructor logic here 


>// 


>} 


>public void Open() 


>{ 


>objConnect.Open(); 


>} 


>public void close() 


>{ 


>objConnect.Close(); 


>} 


>public bool setNewUser(String name, String password) 


>{ 


>Open(); 


>String select = "SELECT * FROM users"; 


>OleDbCommand objCommand = new OleDbCommand(select, objConnect); 


>//declare a variable to hold a DataReader object 


>OleDbDataReader objDataReader; 


>objDataReader = objCommand.ExecuteReader(); 


>while(objDataReader.Read()) 


>{ 


>if(objDataReader.GetString(0).CompareTo(name) == 0) 


>{ 


>objDataReader.Close(); 


>close(); 


>return false; 


>} 


>ErrorMessage += objDataReader.GetString(0); 


>} 


>objDataReader.Close(); 


>string strInsert = "INSERT INTO users (userName, password) VALUES ('" + name 
>+ "', '" + password + "' ) "; 


>ErrorMessage += strInsert; 


>try 


>{ 


>// create a new OleDbCommand using the connection object and select 
>statement 


>objCommand = new OleDbCommand(strInsert, objConnect); 


>// execute the SQL statement 


>objCommand.ExecuteNonQuery(); 


>} 


>catch (Exception objError) 


>{ 


>// display error details 


>//outError.InnerHtml = "<b>* Error while accessing data</b>.<br />" + 
>objError.Message + "<br />" + objError.Source; 


>ErrorMessage += objError.ToString(); 


>return false; //and stop execution 


>} 


>objDataReader.Close(); 


>close(); 


>return true; 


>} 


>}