My Solutions - lamp.cse.fau.edu

advertisement
Anees Bedi Assignment 4
username: abedi
password: oracle
abedi_a4p1.cs
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Data;
System.Data.SqlClient;
namespace abedi_a4p1
{
class abedi_a4p1
{
static void Main(string[] args)
{
string connString = @"
server = dbw.cse.fau.edu;
integrated security = false;
database = abedi_spjdatabase;
user id = abedi;
password = oracle;
MultipleActiveResultSets = true;
";
string query1 = "select * from s order by s#";
string query2 = @"select distinct p.* from spj, p where
spj.s# = @snum and spj.p# = p.p#
order by p.p#";
string query3 = @"select distinct j.* from j, spj
where spj.s# = @snum and spj.p# = @pnum and spj.j# = j.j#
order by j.j#";
string sum1 = "select sum(qty) from spj where spj.s# = @snum";
string sum2 = "select sum(qty) from spj where spj.s# = @snum and spj.p# = @pnum";
string sum3 = "select qty from spj where spj.s# = @snum and spj.p# = @pnum and
spj.j# = @jnum";
SqlConnection conn = null;
SqlDataReader reader1 = null, reader2 = null, reader3 = null;
try
{
conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd1 = new SqlCommand(query1, conn);
SqlCommand cmd2 = new SqlCommand(query2, conn);
SqlCommand cmd3 = new SqlCommand(query3, conn);
cmd2.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmd2.Prepare();
cmd3.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmd3.Parameters.Add("@pnum", SqlDbType.VarChar, 5);
cmd3.Prepare();
SqlCommand cmdsum1 = new SqlCommand(sum1, conn);
SqlCommand cmdsum2 = new SqlCommand(sum2, conn);
SqlCommand cmdsum3 = new SqlCommand(sum3, conn);
cmdsum1.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmdsum1.Prepare();
cmdsum2.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmdsum2.Parameters.Add("@pnum", SqlDbType.VarChar, 5);
cmdsum2.Prepare();
cmdsum3.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmdsum3.Parameters.Add("@pnum", SqlDbType.VarChar, 5);
cmdsum3.Parameters.Add("@jnum", SqlDbType.VarChar, 5);
cmdsum3.Prepare();
reader1 = cmd1.ExecuteReader();
while (reader1.Read())
{
cmdsum1.Parameters[0].Value = reader1[0].ToString();
int ssum = (int)cmdsum1.ExecuteScalar();
Console.WriteLine(reader1[0].ToString() + " "
+ reader1[1].ToString() + " "
+ reader1[2].ToString() + " "
+ reader1[3].ToString() + " " + ssum);
cmd2.Parameters[0].Value = reader1[0].ToString();
reader2 = cmd2.ExecuteReader();
while (reader2.Read())
{
cmdsum2.Parameters[0].Value = reader1[0].ToString();
cmdsum2.Parameters[1].Value = reader2[0].ToString();
int psum = (int)cmdsum2.ExecuteScalar();
Console.WriteLine("
" + reader2[0].ToString() + " "
+ reader2[1].ToString() + " "
+ reader2[2].ToString() + " "
+ reader2[3].ToString() + " "
+ reader2[4].ToString() + " " + psum);
cmd3.Parameters[0].Value = reader1[0].ToString();
cmd3.Parameters[1].Value = reader2[0].ToString();
reader3 = cmd3.ExecuteReader();
while (reader3.Read())
{
cmdsum3.Parameters[0].Value = reader1[0].ToString();
cmdsum3.Parameters[1].Value = reader2[0].ToString();
cmdsum3.Parameters[2].Value = reader3[0].ToString();
int jsum = (int)cmdsum3.ExecuteScalar();
Console.WriteLine("
" + reader3[0].ToString() + "
+ reader3[1].ToString() + " "
+ reader3[2].ToString() + " " + jsum);
}
reader3.Close();
}
reader2.Close();
}
}
catch (Exception e)
{
Console.WriteLine("Program aborted: " + e);
}
finally
"
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
}
abedi_a4p2.cs
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Data;
System.Data.SqlClient;
System.Text.RegularExpressions;
namespace abedi_a4p2
{
class abedi_a4p2
{
static void Main(string[] args)
{
string connString = @"
server = dbw.cse.fau.edu;
integrated security = false;
database = abedi_assig3db;
user id = abedi;
password = oracle;
MultipleActiveResultSets = true;
";
string stmt = "insertj";
string stmt2 = "select * from jsp(@snum, @pnum)";
string stmt3 = "select * from j order by j#";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand(stmt, conn);
SqlCommand cmd2 = new SqlCommand(stmt2, conn);
SqlCommand cmd3 = new SqlCommand(stmt3, conn);
cmd.CommandType = CommandType.StoredProcedure;
/* The parameters must have the same names as in the create
procedure statement for the procedure, and the ReturnValue
parameter has to be the last one added (because of the way
we are setting the values of the input parameters). */
cmd.Parameters.Add("@jnum", SqlDbType.VarChar, 5);
cmd.Parameters.Add("@jname", SqlDbType.VarChar, 20);
cmd.Parameters.Add("@city", SqlDbType.VarChar, 10);
SqlParameter ret = cmd.Parameters.Add("@code", SqlDbType.Int);
ret.Direction = ParameterDirection.ReturnValue;
cmd.Prepare();
cmd2.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmd2.Parameters.Add("@pnum", SqlDbType.VarChar, 5);
cmd2.Prepare();
cmd3.Prepare();
SqlDataReader jreader = null;
for (; ; )
{
jreader = cmd3.ExecuteReader();
Console.WriteLine("J table:");
while(jreader.Read())
{
Console.WriteLine(jreader[0] + " " + jreader[1] + " " + jreader[2]);
}
jreader.Close();
Console.WriteLine(@"Enter command: insert, jsp, or exit");
string line = Console.ReadLine();
Regex r = new Regex("[ ]+");
string[] fields = r.Split(line);
if (fields[0] == "exit") break;
if (fields[0] == "insert")
{
Console.WriteLine(@"Enter jnum, jname, and city");
line = Console.ReadLine();
string[] parameters = r.Split(line);
cmd.Parameters[0].Value = parameters[0];
cmd.Parameters[1].Value = parameters[1];
cmd.Parameters[2].Value = parameters[2];
cmd.ExecuteNonQuery();
int n = (int)ret.Value;
if (n == 0) Console.WriteLine
("Insert for " + parameters[0] + " complete.");
else Console.WriteLine
("Insert for " + parameters[0] + " failed.");
}
if (fields[0] == "jsp")
{
Console.WriteLine(@"Enter snum, pnum");
line = Console.ReadLine();
string[] parameters = r.Split(line);
cmd2.Parameters[0].Value = parameters[0];
cmd2.Parameters[1].Value = parameters[1];
SqlDataReader result = cmd2.ExecuteReader();
Console.WriteLine("JSP results:");
while (result.Read())
{
Console.WriteLine(result[0] + " " + result[1] + "
}
Console.WriteLine();
result.Close();
}
}
}
" + result[2]);
catch (Exception e)
{
Console.WriteLine("Program aborted: " + e);
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
}
}
}
}
abedi_a4p3.cs
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Text.RegularExpressions;
System.Data.SqlClient;
System.Data;
namespace abedi_a4p3
{
class abedi_a4p3
{
static void Main()
{
/* names will hold the names of the fields of the table being
queried. */
/* types will hold the SQL types of the fields of the table being
queried. */
List<string> names = new List<string>(),
types = new List<string>();
Console.WriteLine(@"Please enter database name, table name, and number of
inserts.");
string line = Console.ReadLine();
Regex r = new Regex("[ ]+");
string[] inputs = r.Split(line);
int ninserts = Convert.ToInt32(inputs[2]);
string connString = @"
server = dbw.cse.fau.edu;
integrated security = false;
database = "+inputs[0]+@";
user id = abedi;
password = oracle;
MultipleActiveResultSets = true;
";
SqlConnection conn = null;
SqlDataReader reader = null;
try
{
conn = new SqlConnection(connString);
conn.Open();
string query1 = "select * from " + inputs[1];
string query2 = "insert into " + inputs[1] + " values(";
SqlCommand cmd1 = new SqlCommand(query1, conn);
reader = cmd1.ExecuteReader(CommandBehavior.SchemaOnly);
for (int i = 0; i < reader.FieldCount; i++)
{
names.Add(reader.GetName(i));
types.Add(reader.GetDataTypeName(i));
query2 += "@field" + i;
if (i != reader.FieldCount - 1)
query2 += ",";
else
query2 += ")";
}
Console.WriteLine(query2);
SqlCommand cmd2 = new SqlCommand(query2, conn);
for (int j = 0; j < reader.FieldCount;
{
if (types[j] == "int")
{
cmd2.Parameters.Add("@field" +
}
else if (types[j] == "float")
{
cmd2.Parameters.Add("@field" +
}
else
{
cmd2.Parameters.Add("@field" +
}
}
j++)
j, SqlDbType.Int);
j, SqlDbType.Float);
j, SqlDbType.VarChar, 20);
cmd2.Prepare();
for (int j = 0; j < reader.FieldCount; j++)
Console.Write("{0,-8}", names[j]);
Console.WriteLine();
reader.Close();
reader = cmd1.ExecuteReader();
while (reader.Read())
{
for (int j = 0; j < reader.FieldCount; j++)
{
Console.Write("{0,-8}", reader[j]);
}
Console.WriteLine();
}
reader.Close();
for (int i = 0; i < ninserts; i++)
{
Console.WriteLine(@"Enter record " + i + ":");
string record = Console.ReadLine();
string[] fields = r.Split(record);
for (int j = 0; j < fields.Length;
{
if (types[j] == "int")
{
cmd2.Parameters[j].Value =
}
else if (types[j] == "float")
{
cmd2.Parameters[j].Value =
}
else
{
cmd2.Parameters[j].Value =
}
}
j++)
int.Parse(fields[j]);
float.Parse(fields[j]);
fields[j];
try
{
int code = cmd2.ExecuteNonQuery();
if (code != 0)
Console.WriteLine("Insert Complete");
}
catch (Exception e)
{
Console.WriteLine("Record already exists or was incorrectly entered");
}
}
reader = cmd1.ExecuteReader(CommandBehavior.SchemaOnly);
for (int j = 0; j < reader.FieldCount; j++)
Console.Write("{0,-8}", names[j]);
Console.WriteLine();
reader.Close();
reader = cmd1.ExecuteReader();
while (reader.Read())
{
for (int j = 0; j < reader.FieldCount; j++)
{
Console.Write("{0,-8}", reader[j]);
}
Console.WriteLine();
}
reader.Close();
}
catch (Exception e)
{
Console.WriteLine("Incorrect table or database name");
}
finally
{
conn.Close();
}
}
}
}
abedi_a4p4.cs
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
System.Data;
System.Data.SqlClient;
System.Text.RegularExpressions;
namespace abedi_a4p4
{
class abedi_a4p4
{
static void Main()
{
string connString = @"
server = dbw.cse.fau.edu;
integrated security = false;
database = abedi_assig3db;
user id = abedi;
password = oracle;
MultipleActiveResultSets = true;
";
DataSet ds = new DataSet();
string query = "select * from j";
SqlDataAdapter sad = new SqlDataAdapter(query, connString);
sad.Fill(ds, "j");
string query2 = "select * from spj";
SqlDataAdapter sad2 = new SqlDataAdapter(query2, connString);
sad2.Fill(ds, "spj");
DataColumn parentcol = ds.Tables["j"].Columns["j#"];
DataColumn childcol = ds.Tables["spj"].Columns["j#"];
DataRelation dr = new DataRelation("spj_j", parentcol, childcol);
ds.Relations.Add(dr);
DataTable jtable = ds.Tables["j"];
DataTable spjtable = ds.Tables["spj"];
for (; ; )
{
Console.WriteLine(@"Enter command: insert, getp, dumpxml, insertxml, exit");
string line = Console.ReadLine();
Regex r = new Regex("[ ]+");
if (line == "insert")
{
Console.WriteLine(@"Enter jnum, jname, and city:");
line = Console.ReadLine();
string[] inputs = r.Split(line);
DataRow nr = jtable.NewRow();
nr.BeginEdit();
nr["j#"] = inputs[0];
nr["jname"] = inputs[1];
nr["city"] = inputs[2];
nr.EndEdit();
try
{
jtable.Rows.Add(nr);
}
catch (Exception e)
{
Console.WriteLine("Could not insert record into table");
}
}
else if (line == "getp")
{
Console.WriteLine(@"Enter jname:");
line = Console.ReadLine();
DataRow[] rows = spjtable.Select("Parent.jname = '" + line + "'");
Console.WriteLine("Parts supplied to " + line + ":");
for (int i = 0; i < rows.Length; i++)
{
Console.WriteLine(rows[i][1]);
}
Console.WriteLine();
}
else if (line == "dumpxml")
{
Console.WriteLine(@"Enter filename: ");
line = Console.ReadLine();
ds.Relations["spj_j"].Nested = true;
ds.WriteXml(line);
}
else if (line == "insertxml")
{
Console.WriteLine(@"Enter filename: ");
line = Console.ReadLine();
ds.ReadXml(line);
}
else if (line == "exit")
{
SqlCommandBuilder b = new SqlCommandBuilder(sad);
SqlCommandBuilder b2 = new SqlCommandBuilder(sad2);
sad.Update(jtable);
sad2.Update(spjtable);
break;
}
}
}
}
}
insert.xml
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<j>
<j_x0023_>J11</j_x0023_>
<jname>Test1</jname>
<city>NewCity</city>
<spj>
<s_x0023_>S2</s_x0023_>
<p_x0023_>P5</p_x0023_>
<j_x0023_>J11</j_x0023_>
<qty>200</qty>
</spj>
<spj>
<s_x0023_>S3</s_x0023_>
<p_x0023_>P1</p_x0023_>
<j_x0023_>J11</j_x0023_>
<qty>400</qty>
</spj>
<spj>
<s_x0023_>S6</s_x0023_>
<p_x0023_>P1</p_x0023_>
<j_x0023_>J11</j_x0023_>
<qty>200</qty>
</spj>
</j>
</NewDataSet>
insertjcs.cs
using
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Data.SqlTypes;
Microsoft.SqlServer.Server;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static SqlInt32 insertjcs(SqlString jnum, SqlString jname, SqlString city)
{
SqlConnection conn = null;
try
{
conn = new SqlConnection("Context connection=true");
conn.Open();
string stmt = "insert into j values(@jnum, @jname, @city)";
SqlCommand cmd = new SqlCommand(stmt, conn);
cmd.Parameters.Add("@jnum", SqlDbType.VarChar);
cmd.Parameters.Add("@jname", SqlDbType.VarChar);
cmd.Parameters.Add("@city", SqlDbType.VarChar);
cmd.Parameters[0].Value = jnum;
cmd.Parameters[1].Value = jname;
cmd.Parameters[2].Value = city;
int code = cmd.ExecuteNonQuery();
if (code == 0)
return -1;
else
return 0;
}
catch (Exception e)
{
return -1;
}
}
};
jspcs.cs
using
using
using
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Data.SqlTypes;
Microsoft.SqlServer.Server;
System.Collections;
System.Data.Common;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(
DataAccess = DataAccessKind.Read,
FillRowMethodName = "GetNextProject",
TableDefinition =
"j# nvarchar(5),jname nvarchar(20),city nvarchar(10)"
)]
public static IEnumerable jspcs(SqlString snum, SqlString pnum)
{
using (SqlConnection conn =
new SqlConnection("Context Connection = true"))
{
try
{
conn.Open();
string stmt = @"select J.* from SPJ, J where SPJ.p# = @pnum and SPJ.s# = @snum
and SPJ.j# = J.j#";
SqlCommand cmd = new SqlCommand(stmt, conn);
cmd.Parameters.Add("@snum", SqlDbType.VarChar, 5);
cmd.Parameters.Add("@pnum", SqlDbType.VarChar, 5);
cmd.Parameters[0].Value = snum;
cmd.Parameters[1].Value = pnum;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "jsp");
DataTable jsp = ds.Tables[0];
DataTableReader reader = jsp.CreateDataReader();
return reader;
}
catch (Exception e) { return "For debugging: " + e; }
}
}
public static void GetNextProject(object row, out string jnum,
out string jname, out string city)
{
DbDataRecord record = (DbDataRecord)row;
jnum = (string)record[0];
jname = (string)record[1];
city = (string)record[2];
}
};
var.cs
using
using
using
using
using
System;
System.Data;
System.Data.SqlClient;
System.Data.SqlTypes;
Microsoft.SqlServer.Server;
[Serializable]
[Microsoft.SqlServer.Server.SqlUserDefinedAggregate(Format.Native)]
public struct var
{
private double sum;
private double sumsq;
private double n;
public void Init()
{
sum = 0;
sumsq = 0;
n = 0;
}
public void Accumulate(SqlDouble Value)
{
n++;
sum += (double)Value;
sumsq += (double)(Value * Value);
}
public void Merge(var Group)
{
}
public SqlDouble Terminate()
{
return (sumsq / n) - (sum / n) * (sum / n);
}
}
a4prob5.sql
use abedi_assig3db;
begin transaction
declare @error integer;
execute @error = insertjcs 'J8', 'test', 'test';
if @error = -1
select 'J# already exists'
else
select 'Insert complete'
select * from j;
execute @error = insertjcs 'J1', 'test', 'test';
if @error = -1
select 'J# already exists'
else
select 'Insert complete'
select * from j;
select * from jspcs('S1', 'P1');
select var(status) from s;
rollback transaction
abedi_a4p6.cs
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace abedi_a4p6
{
class abedi_a4p6
{
static void Main(string[] args)
{
abedi_spjnumDataContext db = new abedi_spjnumDataContext();
Console.WriteLine("A. Print the s#s and snames of suppliers who supply a bolt.");
var queryA =
(from sx in db.S
where sx.SPJs.Any(spjx => spjx.P.pname == "Bolt")
select new {sx.snum, sx.sname}).Distinct();
foreach (var s in queryA) Console.WriteLine(s);
Console.WriteLine();
Console.WriteLine("B. Print the s#s and snames of suppliers who supply a bolt.");
var queryB =
(from sx in db.S
join spjx in db.SPJs on sx.snum equals spjx.snum
join px in db.Ps on spjx.pnum equals px.pnum
where px.pname == "Bolt"
select new { sx.snum, sx.sname }).Distinct();
foreach (var s in queryB) Console.WriteLine(s);
Console.WriteLine();
Console.WriteLine("C. Print the s#s and snames of suppliers who supply a bolt.");
var queryC =
(from sx in db.S
from spjx in db.SPJs
where spjx.snum == sx.snum
from px in db.Ps
where px.pname == "Bolt"
where spjx.pnum == px.pnum
select new { sx.snum, sx.sname }).Distinct();
foreach (var s in queryC) Console.WriteLine(s);
Console.WriteLine();
Console.WriteLine("D. Print the s#s of suppliers whose maximum quantity supplied is
greater than the maximum quantity supplied by supplier S3.");
var queryD =
(from spjx in db.SPJs
group spjx by spjx.snum into gs
let max = gs.Max(spjx => spjx.qty)
where max > (from spjy in db.SPJs
where spjy.snum == "S3"
select spjy.qty).Max()
select gs.Key).Distinct();
foreach (var s in queryD) Console.WriteLine(s);
Console.WriteLine();
Console.WriteLine("E. For each supplier whose maximum quantity supplied is greater
than the maximum quantity supplied by supplier S3, print that supplier's s# and maximum
quantity supplied.");
var queryE =
(from spjx in db.SPJs
group spjx by spjx.snum into gs
let max = gs.Max(spjx => spjx.qty)
where max > (from spjy in db.SPJs
where spjy.snum == "S3"
select spjy.qty).Max()
select new { gs.Key, max }).Distinct();
foreach (var s in queryE) Console.WriteLine("snum: " + s.Key + "
max qty: " +
s.max );
Console.WriteLine();
}
}
}
abedi_a4p7.cs
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace abedi_a4p7
{
class abedi_a4p7
{
static void Main(string[] args)
{
using (abedi_spjnumEntities1 db = new abedi_spjnumEntities1())
{
Console.WriteLine("A. Code a query expression that provides the S#s and snames
of suppliers who supply a red part and who supply a London project.");
var queryA = (from sx in db.S
where sx.PARTS.Any(px => px.color == "Red")
select new { sx.snum, sx.sname }).Intersect
(from sy in db.S
where sy.PROJECTS.Any(jx =>
jx.city == "London")
select new { sy.snum, sy.sname });
foreach (var x in queryA)
Console.WriteLine(x);
Console.WriteLine("B. Code a query expression that provides the J#s of projects
that are supplied by a London supplier with status = 20.");
var queryB = (from jx in db.J
where jx.SUPPLIERS.Any(sx => sx.city == "London" && sx.status ==
20)
select jx.jnum);
foreach (var x in queryB)
Console.WriteLine(x);
}
}
}
}
Download